[英]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 :
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.