很简单,我在文件中有这样的文本:
#number
3222
#number
3311
Run Code Online (Sandbox Code Playgroud)
我在用着:
awk '{打印长度}' file.txt
它打印出:
7
4
7
4
但我只是希望它打印数字的长度并忽略以“#”开头的行,以打印:
4
4
告诉awk
只打印第一个字符不是 a 的行的长度#
:
awk '!/^#/ { print length }' file
Run Code Online (Sandbox Code Playgroud)
块之前!/^#/
是正则表达式匹配测试。如果模式匹配,则不^#
考虑后面的关联块(因为反转了与 的匹配含义)。!
该模式^#
尝试匹配#
当前行开头的 a。
或者,如果您想输出仅包含数字的行的长度:
awk '/^[[:digit:]]+$/ { print length }' file
Run Code Online (Sandbox Code Playgroud)
由于在开头和结尾处都有锚定,该模式^[[:digit:]]+$
仅匹配由单个连续数字组成的行。您还可以用来避免包含任何非数字字符的行。^
$
!/[^[:digit:]]/
或者,仅输出恰好位于以下行之后的行的长度#number
:
awk '$0 == "#number" { getline; print length }' file
Run Code Online (Sandbox Code Playgroud)
在这里,我们与当前行进行字符串比较,如果完全一致 #number
(如问题中的示例数据所示),我们读取下一行getline
并输出其长度。
归档时间: |
|
查看次数: |
1676 次 |
最近记录: |