1

我在这里有一些实时的家庭作业。作为尽职调查,我在过去 2.30 小时内浏览网页并阅读 awk 教程以找到解决方案,毫无希望。这是我想出的那一行:

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

电流输出:

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

预期输出 - 以大写开头的最后一个字段

Tweedledee
Tweedledee
Tweedledee

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

需要你们的专业知识。提前致谢

4

3 回答 3

1

干得好:

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

内容为:接受其NFth字段与 regex 匹配的所有行/[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

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

于 2013-03-28T03:16:22.087 回答
1

像这样:

 awk '$NF ~ /^[A-Z]/{print $NF}' tweedle.txt
于 2013-03-28T05:34:55.520 回答
0

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

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

或(从您的“当前输出”,这条线也适用):

awk '/[a-z]$/' file
于 2013-03-28T11:16:07.300 回答