我有这行:
password requisite pam_cracklib.so difok=355 abcd
如何将“ difok = 355”替换为“ difok = 8”?
值355可以是任何值。
基本上将“ difok = X”替换为“ difok = 8”。
我尝试过:
sed -i '/^#/!s/difok=.*/difok=8/g' temp
但这将替换“ difok =“之后的所有文本
我尝试过:
sed -i '/^#/!s/\bdifok=*\b/difok=8/g' temp
这给出了“ difok = 8355”。
答案 0 :(得分:2)
使用GNU sed和扩展的正则表达式(-r
):
sed -r -i 's/(difok=)[0-9]+/\18/' file
或
sed -r -i 's/(difok=)[^ ]+/\18/' file
输出:
password requisite pam_cracklib.so difok=8 abcd
答案 1 :(得分:1)
我可能会这样:
sed -i 's/difok=[^ ]*/difok=8/' temp
替换命令的前半部分与difok=
匹配,后跟任意数量的非空格字符。
答案 2 :(得分:1)
使用sed
:
echo "password requisite pam_cracklib.so difok=355 abcd" |sed -E -n 's/(.* )(difok=[0-9]+)(.*)/\1difok=8\3/p'
输出:
password requisite pam_cracklib.so difok=8 abcd