我有一个如下的grep结果
Nov-06-22 00:01:16 id-03674-09704
Nov-06-22 00:01:16 id-03642-04246
我需要从结果中删除id-.....-.....
部分。
我使用的是:
grep file.txt | sed 's/ id-(\d){5}-(\d){5}/ /g'
但它返回
Nov-06-22 00:01:16 id-03674-09704
Nov-06-22 00:01:16 id-03642-04246
我检查了regex id-(\d){5}-(\d){5}
,应该没问题。
为什么sed
不替换grep结果?
2条答案
按热度按时间xesrikrc1#
由于您使用的是POSIX BRE regex flavor和
sed
,因此\d
不会被识别为数字匹配构造,并且{5}
会被视为文字{5}
字符串,而不是区间量词。您需要将
\d
替换为[0-9]
,并使用-E
选项启用POSIX ERE语法(或转义间隔限定符大括号):请参阅online demo:
输出量:
此外,仅考虑removing last column与
awk
,甚至与cut
:wgx48brx2#
你可以简单地使用
cut
,通过指定一个分隔符,我假设在你的例子中是空格。你首先需要读取你的文件,然后使用cut
命令。假设你已经有了一个包含所选行的文件,那么你可以如下使用cut
:输出: