325

カンマで区切られた文字列のファイルがあります。カンマを新しい行に置き換えようとしています。私はもう試した:

sed 's/,/\n/g' file

しかし、それは機能していません。私は何が欠けていますか?

4

14 に答える 14

395

tr代わりに使用してください:

tr , '\n' < file
于 2012-05-25T16:27:21.367 に答える
132
sed 's/,/\
/g'

MacOSXで動作します。

于 2012-09-07T20:24:55.280 に答える
25

あなたの sed の使用法が完全に置換式である傾向がある場合(私の傾向があるように)、perl -pe代わりに使用することもできます

$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
于 2014-04-15T23:23:40.443 に答える
15

これは、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だけど...

于 2014-01-13T21:09:19.067 に答える
15

どうやら\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
于 2013-08-10T17:51:41.993 に答える
7

それを完成させるために、これも機能します:

echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"
于 2013-07-17T11:35:28.973 に答える