我有一个以逗号分隔的id文件.我正在尝试用新行替换逗号.我试过了:
sed 's/,/\n/g' file
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我错过了什么?
Pri*_*ley 334
tr改为使用:
tr , '\n' < file
Run Code Online (Sandbox Code Playgroud)
Wal*_*ndt 293
使用 $'string'
你需要一个反斜杠转义的文字换行符来获取sed.至少在bash中,$''字符串将替换\n为真正的换行符,但是你必须加倍sed将看到的反斜杠以逃避换行符,例如
echo "a,b" | sed -e $'s/,/\\\n/g'
Run Code Online (Sandbox Code Playgroud)
Max*_*asy 118
sed 's/,/\
/g'
Run Code Online (Sandbox Code Playgroud)
适用于Mac OS X.
nar*_*789 22
如果你的sed用法往往是完全替换表达式(就像我的那样),你也可以使用perl -pe
$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
Run Code Online (Sandbox Code Playgroud)
小智 14
这适用于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
Run Code Online (Sandbox Code Playgroud)
...... ^J通过做ctrl+ v+ 来完成j.请记住\之前的^J.
PS,我知道RHEL中的sed是GNU,MacOS sed是基于FreeBSD的,虽然我不确定Solaris sed,但我相信这对任何sed都有用.YMMV tho'......
小智 13
显然\r是关键!
$ sed 's/, /\r/g' file3.txt > file4.txt
Run Code Online (Sandbox Code Playgroud)
转化为:
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
Run Code Online (Sandbox Code Playgroud)
对此:
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
Run Code Online (Sandbox Code Playgroud)
MacOS不同,有两种方法可以用mac中的sed来解决这个问题
首先,使用\'$'\n''替换 \n,它可以在MacOS中工作:
sed 's/,/\'$'\n''/g' file
Run Code Online (Sandbox Code Playgroud)第二个,只需使用一个空行:
sed 's/,/\
/g' file
Run Code Online (Sandbox Code Playgroud)PS.注意分开的范围 '
| 归档时间: |
|
| 查看次数: |
281863 次 |
| 最近记录: |