解释:

解释:

我正在尝试创建一个脚本来查找/替换字符串匹配的实例:

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*

相关内容