awk多个管道到不同的部分

时间:2013-11-25 18:47:11

标签: bash awk pipe

我有一些数据,其中每一行看起来或多或少都像这样:

11/11/2013 12:10:10,5000,3000,2000

所以使用普通的awk我会得到:

$1 = 11/11/2013

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

现在我想将这两个元素传递给不同的新awk函数,因为需要根据正斜杠拆分$ 1,并且需要根据逗号分割$ 2。

然而,

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

我只是访问日期,然后Iam已经“通过文件”。如何多次管道?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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]用于第一个等等。