
printf "%s\t" HEMES n{1..1600} >file_a
sed -i 's/\t*$//' file_a > file_a
コードの最初の行 (内容が印刷される場所) の後の行末に発生するタブを削除します。
私の問題は、より多くの行がある大きなファイルで、その行 (HEMES で始まる) の後ろのタブを削除する必要があることです。sed 行を試しても機能しません。文字を削除したい行は常にファイルの最初の行です。
答え1
すべてを 1 行で実行してファイルに出力するのではなく、2 つの部分に分けます。つまり、HEMES 文字列を出力し、次に n{1...1600} シーケンスを追加しますprintf "%s" HEMES > file_a; printf "%s\t" n{1..1600} >> file_a
。
既存のファイル内の HEMES と n1 の間のタブを具体的に削除する必要がある場合は、次のawk
解決策があります。
awk ' {sub(/[[:blank:]]/,""); print} ' file_a > tmp_file && cat tmp_file > file_a
。
これはサブ関数を取り、初めタブの発生時に、そのテキストを一時ファイルに出力し、その内容を file_a に戻します。ファイルを切り替える理由は次のとおりです。インライン編集が可能な awk バージョン (gnu awk だと思います) を使用していない限り、awk、mawk、nawk などのいずれの場合でも、この方法は機能します。