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

时间:2015-04-06 09:37:42

标签: awk

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

3 个答案:

答案 0 :(得分:0)

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

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.Else,您可以使用此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'。对于除最后一行之外的所有行,将其更改为,

答案 1 :(得分:0)

尝试:

$ 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'

答案 2 :(得分:0)

Idiomatic 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

是一个“真实”模式,触发默认操作,即打印(现在重构的)线。