バックスラッシュ+改行シーケンスの削除

バックスラッシュ+改行シーケンスの削除

Linuxには、各レコードに1行のファイルがありますが、行に改行が含まれていると問題が発生します。この場合、バックスラッシュが行末に追加され、レコードが複数行に分割されます。私の質問は次のとおりです。

"abc def \
xyz pqr"

しなければならない:

"abc def xyz pqr"

私はsed -I 's/\\\n/ /g' <file_name>何がうまくいかなかったかを試しました。そのコマンドも試しましたが、tr文字列以外の文字のみを置き換えました。この問題を処理するためのコマンドを提案できますか?

答え1

あなたは利用可能でなければなりません

sed -e :a -e '/\\$/N; s/\\\n//; ta'

ピーター・クラミングズを見る有名なSed Quipsの説明、パート139. 行がバックスラッシュ「\」で終わったら、次の行に追加します。

答え2

あなたはそれを使用することができますawk

$ awk 'sub(/\\$/,""){printf("%s", $0);next};1' file
"abc def xyz pqr"

答え3

最も短い解決策はPerlを使用しているようです。

perl -pe 's/\\\n//'

答え4

別のawk変更

awk '{ORS = /\\/? "": RS; sub(/\\$/, ""); print}' file

関連情報