簡體   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