Awk 将IP列表(带单引号)转换为逗号分隔的
如何使用Awk 将IP列表(带单引号)转换为逗号分隔的,awk,Awk,如何使用awk来编写脚本,以将类似这样的IPs字符串转换为逗号分隔的字符串。我有大约7万个IP Current format - '114.124.35.252' '114.79.61.186' '39.225.242.17' '202.62.16.29' Desired format - '114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29' 如果文件中没有带空格的其他内容,您可以使用sed将空格替换为,。否则,请使用
awk
来编写脚本,以将类似这样的IP
s字符串转换为逗号分隔的字符串。我有大约7万个IP
Current format - '114.124.35.252' '114.79.61.186' '39.225.242.17' '202.62.16.29'
Desired format - '114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'
如果文件中没有带空格的其他内容,您可以使用
sed
将空格
替换为,
。否则,请使用更多详细信息编辑您的问题
sed 's/ /,/g' File
如果不是文件内容,请使用以下选项:
sed 's/ /,/g' <<< $string #string is the variable with the IP string
1.您可以使用tr
(这将用,
替换最后一个换行符。有关详细信息,请参阅man tr
)
awk
的默认记录分隔符是'\n'
。将除最后一行外的所有行更改为,
。尝试:
$ awk -F- '{gsub("\047 ","\047,",$2)}1' OFS="-" file
Current format - '114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'
惯用awk:
$ awk -v OFS=, '{$1=$1}1' ip.txt
'114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'
$1=$1
用-v OFS=,
一,
是一个“true”模式,触发默认操作,即打印(现在已重建)行。请参阅[此][1]帖子。听起来差不多。[1] :谢谢大家的回答。文本文件中的IP列表未使用空格格式化(当我以原始格式列出时,将其重建为行)。原始列表都以这样的换行符列出
“114.124.35.252”
“114.79.61.186”
“39.225.242.17”
“202.62.16.29”共享有关原始列表外观的链接-
AMD$ awk -v n=$(wc -l < File) '{if(NR!=n){ORS=","}else{ORS="\n"}}1' File
'114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'
$ awk -F- '{gsub("\047 ","\047,",$2)}1' OFS="-" file
Current format - '114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'
$ awk -v OFS=, '{$1=$1}1' ip.txt
'114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29'