次のファイルがあります。
a,b,c,d,e,f
1,2,3,4,5,6
7,8,9,0,1,2
最後の2行を次のようにコンマで連結する必要があります。
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
問題は、これがすべてファイルに2つの新しい行を追加するループ内にあることです。
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5
4,3,2,1,0,9
今私も同じことをしなければなりません。それファイルの終わりの最後の行
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9
だから簡単に言うと交換する必要があります。最後コンマを含むテキストファイルの新しい行。行が追加されるため、最後の行だけが表示されます。
いくつかの方法を試しましたが、うまくいきません。最後は、sed '$!N;s/\n/,/' dna.data
改行文字を含むすべての行で機能します。
どんなアイデアがありますか?
答え1
ファイルが改行で終わらない場合は、最後の代替コマンドを処理するだけです(フラグを使用してファイルを所定の位置-i
に変更しますsed
)。
$ sed '$!N;$s/\n/,/' dna.data
a,b,c,d,e,f
1,2,3,4,5,6,7,8,9,0,1,2
0,9,8,7,6,5,4,3,2,1,0,9
ファイルが改行文字で終わったら、エディタを使用できますex
。
$ ex dna.data
$-1s/\n/,/
1,2,3,4,5,6,7,8,9,0,1,2
x
または一行で
echo -e '$-1s/\\n/,/\nx' | ex dna.data
答え2
これはあなたに役立ちます(GNU sed):
sed -i '$!N;$s/\n/,/;P;D' file