请明确一点:我正在/ etc / passwd上测试我的代码。 我正在尝试使用sed从文本中删去第二列(这是我老师的一项练习,这就是为什么我不使用其他任何东西)。 我尝试使用
sed 's/\(.*\):\(.*\):\(.*\)/\2/' /etc/passwd
,但是它削减了最后一列,可能是因为sed占用了所有字符,直到找到最后两个“:”。我如何在不指定文件数量的情况下削减第二列?
答案 0 :(得分:2)
您确定,.*
可以匹配任意数量的字符,包括:
。
[^:]*
匹配除{em> a :
以外的所有内容,因此不容易出现这种情况。
正如Wiktor在评论中指出的那样,然后:
sed -Ee 's/^([^:]*):([^:]*):.*/\2/' <<<'one:two:three:four'
...正确返回two
。