删除 /etc/securetty 中除 console、tty[0-9]* 和 vc/[0-9]* 之外的所有条目

删除 /etc/securetty 中除 console、tty[0-9]* 和 vc/[0-9]* 之外的所有条目

我想删除/etc/securetty文件中除 consoletty[0-9]vc/[09].

~]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
ttyS0
ttysclp0

我尝试使用egrep命令来收集输出。但我不知道如何只得到 1-9“tty 或 vc/”

~]# egrep "console|vc/|tty" /etc/securetty

请帮我得到如下输出

~]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9

答案1

差不多了!

egrep 'console|vc/[0-9]$|tty[0-9]$' /etc/securetty

一般提示是使用单引号而不是双引号,除非您需要替换变量。

答案2

这对我有用。

# sed '/^console$\|^vc\/[1-9]$\|^tty[1-9]$/!d' /etc/securetty

检查后,您可以使用 标志-ised替换该文件。不过,请务必先备份您的文件!

答案3

给出grep多个模式,每个模式都带有-e选项,将有效地在它们之间进行“或”运算。在这里,我还使用grep它的-x选项来让它匹配完整的行:

$ grep -x -e console -e 'tty[0-9]' -e 'vc/[0-9]' /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9

我已经更正了vc/[09]模式,使其vc/[0-9]成为我认为你的意思。

如果您还想要带有数字和(或任何更大的整数)的设备名称,请使用例如tty和作为模式。vc1011tty[0-9]*vc[0-9]*

相关内容