テーブルがあり、各行にファイル名を含む列を追加したいと思います。以下に例を掲載します。入力内容は以下の通りです。
SPATA17 1 217947738
LYPLAL1 1 219383905
FAM47E 4 77192838
SHROOM3 4 77660162
SHROOM3 4 77660731
SHROOM3 4 77662248
出力は次のとおりです。
SPATA17 1 217947738 file1
LYPLAL1 1 219383905 file1
FAM47E 4 77192838 file1
SHROOM3 4 77660162 file1
SHROOM3 4 77660731 file1
SHROOM3 4 77662248 file1
とても役に立ちました。解決策このフォーラムで提案されています(解決策はsed機能を使用することです:)for f in file1 file2 file3; do sed -i "s/$/\t$f/" $f; done
問題がいくつかあります。出力が予想と異なります。これがVimを使って可視化する方法です。
SPATA17 1 217947738^M file1
LYPLAL1 1 219383905^M file1
FAM47E 4 77192838^M file1
SHROOM3 4 77660162^M file1
SHROOM3 4 77660731^M file1
SHROOM3 4 77662248^M file1
新しい行(\ n)を最初に削除する必要があるため、これはバグですか?この解決策が私には適していないことがわかりました。
ベストアンサー1
これは元のファイルにすでに存在する「キャリッジリターン」^M
です。\r
以下を使用して削除できます。
sed -i 's/\r//' file1 file2 file3