很简单,我在文件中有这样的文本:
#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 次 |
| 最近记录: |