awk输入文件中最后一个字段至少包含一个大写的所有行

时间:2013-03-28 02:48:36

标签: awk capslock

我在这里有一个家庭作业的实时。作为尽职调查,我在最近2.30小时浏览网页并阅读awk教程以找到解决方案,无望。 以下是我提出的问题:

awk'/ [A-Z] / {print $ NF}'< tweedle.txt(Tweedle.txt是一首诗)

当前输出:

Tweedledee
Tweedledee
battle;
Tweedledee
rattle.
crow,
tar-barrel;
so,
quarrel.

预期输出 -last以大写字母

开头的字段
Tweedledee
Tweedledee
Tweedledee

只打印大写和小写的最后一个字段。

需要你的专业人士。提前致谢

3 个答案:

答案 0 :(得分:1)

你走了:

awk '$NF ~ /[A-Z]/' < tweedle.txt

这是:接受NF th 字段与正则表达式/[A-Z]/匹配的所有行。 Awk的默认操作是打印线,这就是我想要做的。

如果你想打印最后一个字段至少包含一个大写字母的所有行的最后一个字段(你的问题不是很清楚),

awk '$NF ~ /[A-Z]/ {print $NF}' < tweedle.txt

顺便说一句,这就是我测试它的方式:

faiz@strange-love:/tmp$ cat tweedle.txt 
a b aBoo
c D
a x y
G
j h g
faiz@strange-love:/tmp$ awk '$NF ~ /[A-Z]/ {print $NF}'  tweedle.txt 
aBoo
D
G
faiz@strange-love:/tmp$ awk '$NF ~ /[A-Z]/'  tweedle.txt 
a b aBoo
c D
G

提供这样的东西真的可以让我们更好地理解你的问题。

答案 1 :(得分:1)

像这样:

 awk '$NF ~ /^[A-Z]/{print $NF}' tweedle.txt

答案 2 :(得分:0)

没有看到您的输入文件,有许多可能的解决方案:

awk '$NF~/^[A-Z]/ && $0=$NF' file

或(从你的“当前输出”,这条线也有效):

awk '/[a-z]$/' file