複数行を含むファイルが与えられると、一部は=
最後にあります。
=
次の行で終わる各行をリンクしたいと思います。他の改行は変更せずにそのままにしてください。
sed
1行ずつ行われているようで、これはできませんでした。したがって、改行は常に「追加」されます。
入力例:
Apple
Banana milkshake
Cherry =
Pie
次のようにする必要があります。
Apple
Banana milkshake
Cherry Pie
私はsed
/以外のツールを使用するために完全にオープンですawk
。
ベストアンサー1
使用awk
:
$ awk '{ORS = sub(/=$/,"") ? "" : "\n"} 1' file
Apple
Banana milkshake
Cherry Pie
条件式を使用してORS
(出力レコード区切り文字、デフォルト:改行)を空の文字列または改行に設定します。sub()
行の終わりで置換が完了した場合(既存の行を削除)、true =
、それ以外の場合はfalse最初の場合はORS
に設定し""
、そうでない場合に設定します"\n"
。1
行が印刷されることを示します(ORS
各行に選択された値を使用)。
あるいは、sed
ファイルがメモリと比較してそれほど大きくなく十分に小さいと仮定し、GNUとゼロで区切られた文字を使用することもできます。
sed -z 's/=\n//g' file
sed
ファイル全体を 1 行で読み、=\n
すべての項目をグローバルに置き換えます。