将IP列表(带单引号)转换为逗号分隔



如何使用awk编写脚本,将这样的IP字符串转换为逗号分隔的。我有大约70000个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'

如果文件中没有其他带有空格的内容,则可以使用sedspace替换为,。否则,请编辑您的问题以了解更多详细信息。

sed 's/ /,/g' File

如果不是文件内容,请使用以下内容:

sed 's/ /,/g' <<< $string     #string is the variable with the IP string

编辑:

AMD$ cat File
'114.124.35.252'
'114.79.61.186'
'39.225.242.17'
'202.62.16.29'

1.您可以使用tr(这也将用,替换最后一行。有关详细信息,请参阅man tr

AMD$ tr 'n', ',' < File
'114.124.35.252','114.79.61.186','39.225.242.17','202.62.16.29',

2.否则,您可以使用此awk命令:

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的默认记录分隔符是'n'。将除最后一行外的所有行更改为,

尝试:

$ awk -F- '{gsub("47 ","47,",$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=, 定义的新输出文件分隔符替换默认空白分隔符

1

是一个"true"模式,触发默认操作,即打印(现在重新构建)行。

最新更新