如果我有这种单线纸
$ echo 0123456789ab | awk '{gsub(/..\B/,"&:")}1'
01:23:45:67:89:ab
我想在awk脚本中使用,因此尝试
cat $hosts | awk '{
print "host "$5" {"
print " option host-name \""$5"\";"
print " hardware ethernet "$3";"
x = {gsub(/..\B/,"&:")}1
print " fixed-address "print x";"
print "}"
print ""
}' > /etc/dhcp/reservations.conf
但是失败了
awk: cmd. line:5: x = {gsub(/..\B/,"&:")}1
awk: cmd. line:5: ^ syntax error
awk: cmd. line:6: print " fixed-address "print x";"
awk: cmd. line:6: ^ syntax error
问题
有人知道如何将这样的单行代码集成到awk脚本中吗?
答案 0 :(得分:1)
您不能将{
保存到变量中,因为它表示某些操作。此外,如果保存了sub
或gsub
的输出,它总是会为您提供替换为行/变量的数量。因此最好尝试将代码行更改为以下代码。
更改您的2行:
x = {gsub(/..\B/,"&:")}1
print " fixed-address "print x";"
收件人:
new_line=$0
gsub(/..\B/,"&:",new_line)
print " fixed-address "new_line";"
只要超出实际行的值,就永远不会改变,您也可以稍后在代码中使用它来做其他事情。由于没有提供样品,所以我还没有进行过测试,但是应该可以。