Unix-sed从第一个冒号后的行获取值
我有一个文件(newline.txt),其中包含以下行Unix-sed从第一个冒号后的行获取值,unix,awk,sed,grep,cut,Unix,Awk,Sed,Grep,Cut,我有一个文件(newline.txt),其中包含以下行 Footer - Count: 00034300, Facility: TRACE, File Created: 20160506155539 我试图从此行获取Count:后的值,直到逗号(在示例00034300) 我尝试了这个方法,但我得到的结果是所有数字都通过该命令连接成一个大字符串: grep -i "Count:" newfile.txt | sed 's/[^0-9]//g' 输出:0003430020160506155539
Footer - Count: 00034300, Facility: TRACE, File Created: 20160506155539
我试图从此行获取Count:
后的值,直到逗号(在示例00034300
)
我尝试了这个方法,但我得到的结果是所有数字都通过该命令连接成一个大字符串:
grep -i "Count:" newfile.txt | sed 's/[^0-9]//g'
输出:0003430020160506155539
如何仅获取Count:
后的数字,直到第一个非数字字符
我只需要00034300。使用sed
工作原理:
选择包含/[Cc]ount/
或Count
的行。这样就不需要Count
grep
删除第一个冒号之前的所有内容,包括冒号后面的所有空格s/[^::]*:*/
- 在剩下的部分,
删除第一个逗号后的所有内容s/,.*/
告诉awk将空格、制表符和逗号视为字段分隔符-F'[:blank:],]
选择包含/[Cc]ount/
或计数
的行计数
在所选行上打印第四个字段print$4
$grep-oiP'(?您永远不需要将grep
的输出传输到sed
,因为sed
可以做任何事情grep
可以。非常感谢John。这很有效。:)
$ sed '/[Cc]ount/ s/[^:]*: *//; s/,.*//' newline.txt
00034300
$ awk -F'[[:blank:],]' '/[Cc]ount/ {print $4}' newline.txt
00034300
$ grep -oiP '(?<=Count: )[[:digit:]]+' newline.txt
00034300