我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' file
但这并不奏效。我错过了什么?
我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' file
但这并不奏效。我错过了什么?
当前回答
显然\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
其他回答
这适用于MacOS Mountain Lion (10.8), Solaris 10 (SunOS 5.10)和RHE Linux (Red Hat Enterprise Linux Server release 5.3, Tikanga)……
$ sed 's/{pattern}/\^J/g' foo.txt > foo2.txt
... 这里的^J是通过ctrl+v+ J完成的。注意^J前面的\。
另外,我知道RHEL的sed是GNU的,MacOS的sed是基于FreeBSD的,虽然我不确定Solaris的sed,但我相信这对任何sed都适用。YMMV tho”……
请改用tr:
tr , '\n' < file
sed 's/,/\
/g'
适用于Mac OS X。
如果sed的使用倾向于完全使用替换表达式(就像我的一样),您也可以使用perl -pe来代替
$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
为了使它完整,也可以这样做:
echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"