sed:与えられた行(または最後の行)で改行文字を置き換えます。

sed:与えられた行(または最後の行)で改行文字を置き換えます。

次のファイルがあります。

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

関連情報