我只想要这个文件的输出
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 当前的答案至少需要其中一个。 - 通过添加
$
,我们确保全部的第一个单词由大写字母和/或数字组成。如果没有它,The
、Table
、Pin
、 和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