如何使用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'
如果文件中没有其他带有空格的内容,则可以使用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.您可以使用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"模式,触发默认操作,即打印(现在重新构建)行。