2013-11-25 28 views
0

我有一些數據,其中每個行看起來或多或少像這樣:awk中多個管道,以不同的部分

2013年11月11日12:10:10,5000,3000,2000

因此,與正常AWK我會得到:

$1 = 11/11/2013 

$2 = 12:10:10,5000,3000,2000 

現在我要管這兩個元素不同的新的awk功能,因爲基於斜槓和$ 2只需要基於拆分拆分後逗號$ 1需要..

但是,與

awk '{print $1}' $INPUT | awk -F/ '{print $3 "-" $2 "-" $1}'> $OUTPUT 

我剛剛獲得訪問日期,然後Iam已經「通過文件」。如何多次管道?

回答

1

您也可以使用帶有多個字段分隔符的awk。考慮以下代碼:

> s='11/11/2013 12:10:10,5000,3000,2000' 
> awk -F '[,/: ]+' '{for (i=1; i<=NF; i++) print i":"$i}' <<< "$s" 
1:11 
2:11 
3:2013 
4:12 
5:10 
6:10 
7:5000 
8:3000 
9:2000 
0

您可以直接撥打split函數。無需一個全新的awk程序:

s='11/11/2013 12:10:10,5000,3000,2000' 

awk '{split($1,d,"/"); split($2,t,","); print d[3]"-"d[2]"-"d[1]}' <<<"$s" 

,你可以做任何你需要用的t以同樣的方式... t[1]第一個部件等