カンマで区切られた文字列のファイルがあります。カンマを新しい行に置き換えようとしています。私はもう試した:
sed 's/,/\n/g' file
しかし、それは機能していません。私は何が欠けていますか?
tr
代わりに使用してください:
tr , '\n' < file
sed 's/,/\
/g'
MacOSXで動作します。
あなたの sed の使用法が完全に置換式である傾向がある場合(私の傾向があるように)、perl -pe
代わりに使用することもできます
$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
これは、MacOS Mountain Lion (10.8)、Solaris 10 (SunOS 5.10)、および RHE Linux (Red Hat Enterprise Linux Server リリース 5.3、Tikanga) で動作します...
$ sed 's/{pattern}/\^J/g' foo.txt > foo2.txt
... ++^J
を実行することで実行されます。の前に注意してください。ctrlvj\
^J
PS、RHEL の sed は GNU であり、MacOS の sed は FreeBSD ベースであることを知っています。Solaris の sed についてはわかりませんが、これはどの sed でもほぼ機能すると思います。YMMVだけど...
どうやら\r
鍵です!
$ sed 's/, /\r/g' file3.txt > file4.txt
これを変換しました:
ABFS, AIRM, AMED, BOSC, CALI, ECPG, FRGI, GERN, GTIV, HSON, IQNT, JRCC, LTRE,
MACK, MIDD, NKTR, NPSP, PME, PTIX, REFR, RSOL, UBNT, UPI, YONG, ZEUS
これに:
ABFS
AIRM
AMED
BOSC
CALI
ECPG
FRGI
GERN
GTIV
HSON
IQNT
JRCC
LTRE
MACK
MIDD
NKTR
NPSP
PME
PTIX
REFR
RSOL
UBNT
UPI
YONG
ZEUS
それを完成させるために、これも機能します:
echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"