2014-04-13 52 views
1

我有一组数据,看起来像这样:尴尬:组合两个awk的语句

foo:123 bar baz 
oof:2983 rab zdo 
mor:8 eoinn uiemdh 

什么,我想有作为的结果是:

123 
2983 
8 

假设数据在一个名为test.txt的文件中,我现在拥有的是:

awk '{print $1}' test.txt | awk -F: '{print $2}' 

如何组合这两条语句?

回答

4

你可以用sed的字段分隔符正则表达式:

awk -F' |:' '{print $2}' file 
123 
2983 
8 
+0

确认!我在现场声明中忘记了正则表达式!我收回我的“你不能”声明.... – carveone

+0

不知道这是可能的。这很甜蜜! – user857990

+2

作为字段分隔符的正则表达式是gnu扩展(cc @carveone) – Kevin

1

简而言之,你不能。但是你可以使用广泛的模式匹配设施,做你想做的:

awk '{ tmp = $1; sub(/^.*:/, "", tmp); print tmp; }' test.txt 
1

awk

awk -F' |:' '{$0=$2}1' file 
123 
2983 
8 
+0

这将删除数字值恰好为零的行。 –

+0

@glennjackman固定 – Jotne