sedを使用して列を追加すると、型エラーが発生します。

sedを使用して列を追加すると、型エラーが発生します。

テーブルがあり、各行にファイル名を含む列を追加したいと思います。以下に例を掲載します。入力内容は以下の通りです。

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

おすすめ記事