过滤要求文件中的大写单词(并非所有大写单词)

过滤要求文件中的大写单词(并非所有大写单词)

我只想要这个文件的输出

AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1 

这是我的输入:

6.1.2 Power and Ground Pins
             The following table describes the power and ground pins for the PLL.


             Table 5: Power and Ground Pins
                  Pin Name                                                Description
                                    Analog power pin. This pin provides the power supply for the sensitive analog
                AVDDPLL1V8
                                    blocks of the PLL.
                                    Analog ground pin. This pin provides the ground for the sensitive analog blocks
                AGNDPLL1V8
                                    of the PLL.
                                    Digital power pin. This pin provides power supply for the digital circuits in the
                DVDDPLL1V1
                                    PLL.
                DGNDPLL1V1          Digital ground pin. This pin provides ground for the digital circuits in the PLL.

答案1

一种方法是:

$ awk '$1 ~ /^[[:upper:]]+[0-9]+/ {print $1}' file
AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

解释

^我们只检查每行的第一个字段,如果它以一个或多个大写字符开头[[:upper:]]+,后跟一个或多个数字[0-9]+,则打印它。

根据您的输入,我假设大写字符后面是一个或多个数字。

答案2

尝试下面的 grep 命令来打印所有字母数字字符,

$ grep -oP '[A-Z0-9]*[A-Z][0-9][A-Z0-9]*' file
AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

答案3

如果现有答案的问题是它们找不到仅由大写字母(不含数字)组成的单词,那么我们可以像这样调整 Gnouc 的答案:

awk '$1 ~ /^[[:upper:]0-9]+$/ {print $1}'

或者

awk '$1 ~ /^[[:upper:][:digit:]]+$/ {print $1}'

这与他的解决方案不同之处在于

  • 通过将数字 ([0-9][:digit:]) 放入带有大写字母 ( ) 的括号中[:upper:],我们只要求每个匹配字符要么是大写字母,要么是数字,而 Gnouc 当前的答案至少需要其中一个。
  • 通过添加$,我们确保全部的第一个单词由大写字母和/或数字组成。如果没有它,TheTablePin、 和Analog将匹配,因为它们开始用大写字母。

612如果它是一行中的第一个“单词”(即第一个非空白字符序列),则它将匹配纯数字(例如, )。为了避免这种情况,请执行以下操作

awk '$1 ~ /^[[:upper:]][[:upper:]0-9]*$/ {print $1}'

或者

awk '$1 ~ /^[[:upper:]][[:upper:][:digit:]]*$/ {print $1}'

需要“词”来开始带着一封信。

答案4

sed -n 's/^ *\([[:upper:]0-9]\{10,\}\).*/\1/p'

如果该单词由至少 10 个仅是大写字母和/或数字的连续字符组成,则将打印一行中的第一个单词。没有打印任何其他内容。

在示例数据上运行,其输出为:

AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

相关内容