改行文字を検索してカンマ改行文字に置き換える

改行文字を検索してカンマ改行文字に置き換える

素晴らしいファイルがあります。各行は改行文字で終わり、最初の行の後の各行はコンマで始まります。このように:

blah blah blah
,more blah blah blah
,even more blah blah blah

カンマと改行文字を変更したい。

blah blah blah,
more blah blah blah,
even more blah blah blah

長さが数千行しかないのでVIでやろうとしました。さまざまな組み合わせを試しましたが、何も機能しません。おそらくほとんどそうだと思いますか?

%s//\n,/,/\n/g

しかし、末尾の文字のエラーが発生します。区切り文字とエスケープ文字を混乱させることは確かですが、何が間違っているのかわかりません。

編集:\ rではなく\ nで終わるとします。 :set listを実行すると、各行は$で終わります。

ベストアンサー1

私はGNUを使ってこれを思い出しましたsed

sed -Ee 's/^[,]*(.*)$/\1,/' -e '$s/,$//' file

またはファイルから置き換えてください。

sed -i -Ee 's/^[,]*(.*)$/\1,/' -e '$s/,$//' file

0回以上現れる行の始まり,

^[,]*

そこから行末までパターンをキャプチャします。

(.*)$

キャプチャされたパターンに置き換えて,最後に追加します。

\1, 

,ラスラインを削除します。

-e '$s/,$//'

おすすめ記事