我有一个文件有n行,但我想只找到一行并编辑它而不在屏幕上打印文件内容。文件是动态创建的,因此我无法计算空间和所有空间。所以我想为此使用RegEx。
我的档案是:
hey retry=3
hello so
password so
我想把它作为:
#hey retry=3
hello so
password so
我尝试了所有这些:
sed 's/password[ \t]+requisite[ \t]+pam_pwquality.so/s/^/#/' test1
x='/password[ \t]+requisite[ \t]+pam_pwquality.so/'
sed -i -e "s/\($x\)/#\1/" test1
re="^[password][[ :blank: ]]*[requisite][[ :blank:]]*[pam_pwquality.so][[ :blank:]]*[retry=3]"
但文件没有变化。
答案 0 :(得分:0)
grep -n "password requisite pam_deny.so"
man grep states
-n, - line-number 在输入文件中使用基于1的行号为每行输出添加前缀。 (-n由POSIX指定。)
答案 1 :(得分:0)
我会使用awk
:
awk '$1=="password" && $2=="requisite" && $3=="pam_deny.so" {
$0="#"$0
}1' file
awk
将行拆分为由一个或多个空白字符(包括制表符)分隔的字段。这使得检查各个字段的内容变得简单。
使用gawk
,您可以更改文件:
gawk -i inplace '$1=="password" && $2=="requisite" && $3=="pam_deny.so"
{
$0="#"$0
}1' file