我想用sed替换下面条目中的ip地址。
1500.arp1.akaarp.net.00000000.7ac112c6.123456.6 30 IN TXT "198.18.193.23,2509.417\;198.18.193.25,2609.417\;198.18.193.27,2709.417"
1500.arp1.akaarp.net.00000000.7ac112c6.123456.6 30 IN TXT“19.18.19.27,1110.400
\; 198.18.193.25,2609.417 \; 198.18.193.27,2709.417”
我尝试了以下内容:
sed -i s /“198.18.193.23,2409.417 \; 198.18.193.25,2609.417 \; 198.18.193.27,2709.417”/“198.18.19.27,1110.400”/ filename.txt
如果实际条目中只有一个IP地址,则上述条目有效。如果有多个由正则表达式分隔的ip地址,则不起作用。
答案 0 :(得分:0)
三倍的反斜杠它会起作用:顺便说一下,引号放错地方,或者你也必须逃避它们。
你必须逃脱:
所以quickfix是
sed -i s/"198.18.193.23,2509.417\\\;198.18.193.25,2609.417\\\;198.18.193.27,2709.417"/"198.18.19.27,1110.400"/ file.txt
2个问题:
因此,这个字符串将被替换,这可能不是你想要的(我用数字和字母替换了点):
1500.arp1.akaarp.net.00000000.7ac112c6.123456.6 30 IN TXT 1987187193723,2509.417\;198718z193v25,2609k417\;198.18.193.27,2709.417
更清洁的修复
sed -i "s/\"198\.18\.193\.23,2509\.417\\\;198\.18\.193\.25,2609\.417\\\;198\.18\.193\.27,2709\.417\"/\"198.18.19.27,1110.400\"/" file.txt
如果你想随机化输出,用1到100之间的随机数替换1110,那么这样做(不需要shuf
):
sed -i "s/\"198\.18\.193\.23,2509\.417\\\;198\.18\.193\.25,2609\.417\\\;198\.18\.193\.27,2709\.417\"/\"198.18.19.27,$(($RANDOM%100+1)).400\"/" file.txt
答案 1 :(得分:0)
您的问题非常不明确,但如果您只想更换引号之间的任何IP地址列表,那么这只是:
$ sed 's/"[^"]*"/"198.18.19.27,1110.400"/' file
1500.arp1.akaarp.net.00000000.7ac112c6.123456.6 30 IN TXT "198.18.19.27,1110.400"
如果这不是您想要的,那么请编辑您的问题以澄清您的要求。特别解释你的问题中的这2个句子是什么意思:
以上内容在此输入文件上运行:
$ cat file
1500.arp1.akaarp.net.00000000.7ac112c6.123456.6 30 IN TXT "198.18.193.23,2509.417\;198.18.193.25,2609.417\;198.18.193.27,2709.417"