sbo*_*oga 2 unix awk grep cut sed
我有一个包含以下行的文件 (newline.txt)
Footer - Count: 00034300, Facility: TRACE, File Created: 20160506155539
Run Code Online (Sandbox Code Playgroud)
我试图从这一行获取Count:逗号(在示例中00034300)之后的值。
我试过了,但我得到的是所有数字都用该命令连接成一个大字符串:
grep -i "Count:" newfile.txt | sed 's/[^0-9]//g'
Run Code Online (Sandbox Code Playgroud)
输出:0003430020160506155539
如何获得Count:直到第一个非数字字符之后的数字?
我只需要 00034300。
$ sed '/[Cc]ount/ s/[^:]*: *//; s/,.*//' newline.txt
00034300
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
/[Cc]ount/选择包含Count或 的行count。这消除了对grep.
s/[^:]*: *// 删除第一个冒号之前的所有内容,包括冒号后的任何空格。
在剩下的内容中,s/,.*//删除第一个逗号之后的所有内容。
$ awk -F'[[:blank:],]' '/[Cc]ount/ {print $4}' newline.txt
00034300
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
-F'[[:blank:],]' 告诉 awk 将空格、制表符和逗号视为字段分隔符。
/[Cc]ount/选择包含Count或 的行count。
print $4 在选定行上打印第四个字段。
$ grep -oiP '(?<=Count: )[[:digit:]]+' newline.txt
00034300
Run Code Online (Sandbox Code Playgroud)
这会查找后面的任何数字Count:并打印它们。