我在Linux中的文件中有行,我正在尝试打印没有|和一些参数的行

$cat file
2013-07-15,Provider 1.99,3|30000055|2347|0,12222,1,3,0,0,0,19,aaa,bbb
2013-07-15,Provider 1.99,3|30000055|2347|0,12222,44,12,0,0,0,33,aaa,bbb

我需要这样的输出:
2013-07-15,Provider,2347,12222,1,3,0,0,0,19,aaa,bbb
2013-07-15,Provider,2347,12222,44,12,0,0,0,33,aaa,bbb

我正试着用awk,但我有一些问题。

最佳答案

如果您的线条有相似的图案,您可以:

awk 'BEGIN{FS=OFS=","}{$2="Provider";$3=2347}1' file

如果您不知道模式是什么,那么这里有一个更通用的模式:
awk 'BEGIN{FS=OFS=","}{split($2,a,/ /);split($3,b,/\|/);$2=a[1];$3=b[3]}1' file

如果它不能解决你的问题,我相信它会帮助你找到一个。

08-27 13:23