を使用しています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
sed
GNUを使用すると、行末を次に置き換えることができます。|
sed -i 's/$/|/' temp.txt
これは行の終わりと一致し、として「代替」されますが|
、もちろん行はまだ終了してその値を保持します。\n
答え4
GNUを使用できますsed
。
sed -i 's/.*/&|/' file
特殊文字は&
RHS の一致パターンに対応します。