【发布时间】:2016-11-11 15:31:51
【问题描述】:
我正在尝试在 sed 中做一些疯狂的正则表达式,但不允许这样做
我只是没有得到正则表达式还是 sed 中的正则表达式不同
我正在使用的文件是这样的
46,uie,ieo
39,ieu,tii
44-46,yut,til
45,dkd,ytu
65,dkd,ytu
40-45,dkd,ytu
当我这样做时
cat text.txt | sed s/^4[0-9],//g
我几乎得到了我想要的,我得到了
uie,ieo
39,ieu,tii
44-46,yut,til
dkd,ytu
65,dkd,ytu
40-45,dkd,ytu
但我想摆脱像 40-45 和 44-46 这样的人 所以我试过了
cat text.txt | sed s/^4[0-9](-4[0-9])?,//g
-bash: syntax error near unexpected token `('
当我尝试时
cat text.txt | sed s/^4[0-9]-?4?[0-9]?,//g
我刚刚得到
46,uie,ieo
39,ieu,tii
44-46,yut,til
45,dkd,ytu
65,dkd,ytu
40-45,dkd,ytu
所以没有过滤任何东西
谢谢!
【问题讨论】:
-
用反斜杠转义括号,如下所示:
cat test | sed -r s/^4[0-9]\(-4[0-9]\)?,//g。 -
它是一个 3 列的 csv 文件,要删除第一列,请使用
cut -
@CasimiretHippolyte:他显然不想删除第一列,除非它在 40 到 49 的范围内。
-
@KeithThompson:你说得对,我没看到。