我正在尝试创建一个脚本来查找/替换字符串匹配的实例:
vc/integer
文件 /etc/securetty 包含以下字符串:
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
grep -E 'vc/(\d{0,4}\D)*' /etc/securetty | while read line; do sed -ie "s=$line==g" /etc/securetty; done
正如预期的那样,上面的命令删除了提到的所有字符串,但没有删除第二个数字 0 和 1,它们是最后两个字符串 vc/1 的一部分0VC/11。我留下了一个包含以下内容的文件
0
1
如何修改命令以删除一位数和两位数匹配项?
答案1
你为什么不简单地做这个呢?
sed -i -e 's|vc/[0-9]\{1,\}||g' /etc/security
解释:
= regex
[0-9]\{1,\}
> 1 个或多个前面原子的匹配项,在您的情况下恰好是[0-9]
。请注意,\d+
虽然与我给出的相同[0-9]\{1,\}
,但不符合 POSIX sed。同样,请注意[0-9]\{0,\}
等于\d*
。