我的sed命令是
sed '/(.*:)/d' <<< 'abcd:bcde:cdeaf'
它必须返回
bcde:cdeaf
(即)必须删除该行中第一个冒号之前的所有字符以及冒号本身。
但这并没有删除任何内容。
我的困惑主要是由于
1)是否需要在sed regex-es内部转义用于模式匹配的括号?
2)在任何情况下(转义/不转义),它均不起作用。我试过了,
sed -E '/\\(.*:\\)/d' <<< 'abcd:bcde'
或者,仅使用bash:
—
jasonwryan 2015年
printf "%s\n" "${line#*:}"
...
@jasonwryan-好点,考虑示例源。这绝对是处理它的更有效方法。但如果
—
mikeserv
while read line
是$line
,则sed
应该首选。
sed 's/[^:]*://'
。d
顺便说一句,您并没有删除输入行,而是使用s///
ubstitution命令对其进行了修改。您必须完全替换第一个非冒号位和其后的冒号。