2015-04-06 132 views
0

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

请参阅[本] [1]帖子。听起来相同。 [1]:http://stackoverflow.com/questions/6520816/replacing-the-char-using-awk – Sami 2015-04-06 09:42:37

回答

0

你可以只用,sed,如果没有其他的内容与文件中的空间更换space。否则,编辑您的问题更多细节。

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.You可以使用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'。除最后一行外,将其更改为,

+0

感谢所有为你的答案。 – Steve 2015-04-07 01:21:06

+0

谢谢你的回答。文本文件中的IP列表未用空格格式化(当我以原始格式列出时,Stackoverflow将其重构为行)。原始列表全部用这样的换行符列出
'114.124.35.252'
'114.79.61.186'
'39.225.242.17'
'202.62.16.29' – Steve 2015-04-07 01:30:58

+0

在原始列表的外观上分享链接 - https: //www.dropbox.com/s/u0q8b1wtw65e7qy/ip.txt?dl=0 – Steve 2015-04-07 01:52:53

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

习语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=,定义的分隔符

是 “真” 模式,触发所述默认操作,它是打印(现在重构)线。

相关问题