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