在特定行的末尾输入 IP

在特定行的末尾输入 IP

我有以下遵循相同模式的 file.txt,我想通过添加 ip 来修改该文件所在的位置:

# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65
/bin/false

我想在包含作为用户用户控制台的行末尾添加一个IP:

 USER CONSOLA *,!10.249.247.4,!10.249.245.65,!10.249.245.90,

我目前只能在整个文档中添加IP,但不能在使用的代码的特定行中添加IP

sed 's/\r\?$/,!10.10.11.1/' file.txt 

答案1

在行首(^锚点)进行匹配并在行尾($锚点)替换新文本:

$ sed '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt
# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.10.11.1
/bin/false

如果您的文件具有您希望保留的 Windows/DOS 风格的 CRLF 行结尾,请将上面的内容修改为

sed '/^USER CONSOLA/ s/\r$/,!10.10.11.1\r/' file.txt

如果你希望保留 DOS 结尾,那么首先使用 删除它们dos2unix或添加一个附加命令来在 sed 中执行此操作:

sed -e 's/\r$//' -e '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt

答案2

使用下面的方法来实现相同的效果

sed  "/USER CONSOLA/s/.*/&\,\!10.249.245.90,/g" filename

输出

# gfhfhgfh
gfhfghgfhgfhgfh
MACs
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.249.245.90,
/bin/false

相关内容