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'