我在test_file
中有一个文件Linux
,如下所示。
ags;'s
dkfprper
sdkl;d;;'s
ip access
100 200 remark
50 deny pdldsl;l;sd;;l;d
permit eyuopopqwopq
10 permit eteioe
200 200 200 deny abc
remark aiii[dsigdfidflkfk
1 deny
现在我要提取其中包含ip or remark or deny or permit
的行
我已经完成了下面的工作。
grep -E 'ip|remark|deny|permit' test_file >> string_check
结果在下面
ip access
100 200 remark
50 deny pdldsl;l;sd;;l;d
permit eyuopopqwopq
10 permit eteioe
200 200 200 deny abc
remark aiii[dsigdfidflkfk
1 deny
现在,我要从行中删除所有numbers and spaces
,直到获得ip or remark or deny or permit
作为起始词。
我想要的结果是
ip access
remark
deny pdldsl;l;sd;;l;d
permit eyuopopqwopq
permit eteioe
deny abc
remark aiii[dsigdfidflkfk
deny
我已经完成了以下操作,但没有得到任何结果
sed 's/^ *//g' string_check
这只会删除行首的空格
我如何获得结果?
答案 0 :(得分:4)
sed -E -n 's/^[ 0-9]*(ip|remark|deny|permit)/\1/p' test_file
打破这一点:
sed -E
表示使用“扩展”正则表达式语法;没有它,您将需要更多反斜杠sed -n
说不要打印行,除非使用了p
命令s///p
说如果替换完成,则打印出该行