改行文字をパイプと改行文字に置き換える

改行文字をパイプと改行文字に置き換える

を使用していますksh

temp.txtパイプで区切られたデータを含むファイルがあります。

one|two|three|four|five
abc|def|pqr|lmn|xyz

例が示すように、レコードは最後の列のデータ値の後に改行文字で終わります。

しかし、レコードが次のようにパイプ区切り文字と改行文字で終わりたいと思います。

one|two|three|four|five|
abc|def|pqr|lmn|xyz|

次のコマンドを試しましたが、まだ成功しませんでした。

tr '\n' '|\n' < temp.txt

そして

sed -i 's/\n/|\n/g' temp.txt

私は何を逃したことがありませんか?

答え1

線を接続しないと、パターンスペース\nには表示されません。行末アンカーはです。sed$

したがって、GNU sedの場合:

sed -i 's/$/|/' temp.txt

答え2

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

$ :|paste -d'|' file - > new_file
one|two|three|four|five|
abc|def|pqr|lmn|xyz|

またはperl:

perl -i.bak -ple '$_.="|"' file

答え3

sedGNUを使用すると、行末を次に置き換えることができます。|

sed -i 's/$/|/' temp.txt

これは行の終わりと一致し、として「代替」されますが|、もちろん行はまだ終了してその値を保持します。\n

答え4

GNUを使用できますsed

sed -i 's/.*/&|/' file

特殊文字は&RHS の一致パターンに対応します。

関連情報