繁体   English   中英

awk打印一行的一些参数

[英]awk to print some parameters of a line

我在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

如果它不能解决您的问题,我很确定它可以帮助您指导获得一个问题。

使用

sed 's/ [^|]*|[^|]*|\([^|]*\)|[^,]/,\1/' input

还有一些较短的版本:

sed 's/ .*|\([^|]*\)|[^,]*/,\1/' input

甚至更短:

sed 's/ .*|\(.*\)|[^,]*/,\1/' input

使用awk,让空格或逗号或管道为字段分隔符:

awk -F '[[:blank:],|]' -v OFS=, '{
    print $1,$2,$6,$8,$9,$10,$11,$12,$13,$14,$15,$16
}' file
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM