如何替换awk中的值
How to replace the value in awk
我有以下文件
cat log.txt
/root/logs/*.* {
dbset
quotatab
rsyslog.conf
dataload 23
server 25
inputrc
}
我只想更换服务器值。这里是 25。但它可以是任何值。使用 awk '/server/{print $NF}' log.txt 可以获取值并使用 sed 替换它。但我想获取价值并替换为 awk 本身。有人可以帮助我吗?
是的,您可以通过 awk 本身使用 awk 的内置 sub 或 gsub 函数来完成。
$ awk '/server/{sub(/.*/,"XX",$NF)}1' file
/root/logs/*_log {
dbset
quotatab
rsyslog.conf
dataload 23
server XX
inputrc
}
在上面我只是将 $NF 值 25
替换为 XX
。根据需要将上述子函数中的XX
改为其他值即可。
或
awk '/server/{$NF="XX"}1' file
或
你可以使用 sed。
$ sed '/server/s/[^ ]* *$/XX/' file
/root/logs/*.* {
dbset
quotatab
rsyslog.conf
dataload 23
server XX
inputrc
}
我有以下文件
cat log.txt
/root/logs/*.* {
dbset
quotatab
rsyslog.conf
dataload 23
server 25
inputrc
}
我只想更换服务器值。这里是 25。但它可以是任何值。使用 awk '/server/{print $NF}' log.txt 可以获取值并使用 sed 替换它。但我想获取价值并替换为 awk 本身。有人可以帮助我吗?
是的,您可以通过 awk 本身使用 awk 的内置 sub 或 gsub 函数来完成。
$ awk '/server/{sub(/.*/,"XX",$NF)}1' file
/root/logs/*_log {
dbset
quotatab
rsyslog.conf
dataload 23
server XX
inputrc
}
在上面我只是将 $NF 值 25
替换为 XX
。根据需要将上述子函数中的XX
改为其他值即可。
或
awk '/server/{$NF="XX"}1' file
或
你可以使用 sed。
$ sed '/server/s/[^ ]* *$/XX/' file
/root/logs/*.* {
dbset
quotatab
rsyslog.conf
dataload 23
server XX
inputrc
}