笨拙:合并两个awk语句

笨拙:合并两个awk语句,awk,separator,Awk,Separator,我有一组数据如下所示: 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}' 我怎样才能把这两种说法结合起来呢?简而言之,你不能。但是,您可以使用广泛的模式匹配功能来执行您想要的操作: awk '{ tmp = $1; sub(/^.*:/,

我有一组数据如下所示:

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}'

我怎样才能把这两种说法结合起来呢?

简而言之,你不能。但是,您可以使用广泛的模式匹配功能来执行您想要的操作:

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

简而言之,你不能。但是,您可以使用广泛的模式匹配功能来执行您想要的操作:

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

可以将字段分隔符转换为正则表达式:

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

可以将字段分隔符转换为正则表达式:

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

短的
awk

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

短的
awk

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

啊!我忘了字段语句中的正则表达式!我收回了我的“你不能”声明……我不知道这是可能的。这太好了!Regex作为字段分隔符是一个gnu扩展(cc@carveone)
nawk
/usr/xpg4/bin/awk
(solaris)可以处理Regex字段分隔符,因此不仅仅是
gawk
。还可以作为字符类编写:
-F'[:]
Ack!我忘了字段语句中的正则表达式!我收回了我的“你不能”声明……我不知道这是可能的。这太好了!Regex作为字段分隔符是一个gnu扩展(cc@carveone)
nawk
/usr/xpg4/bin/awk
(solaris)可以处理Regex字段分隔符,因此不仅仅是
gawk
。还可以作为字符类编写:
-F'[:]“
这将删除数值正好为零的行。这将删除数值正好为零的行。