我想问一个关于 'awk' 的问题,例如:
awk '{print $8}' tes.txt
output : size=21341,
但我只想 grep 号码“21341”,你能给我如何 grep 号码的解决方案吗?
与
sed
:
awk '{print $8}' tes.txt|sed 's/.*size=\(.*\),$/\1/'
awk '{print $8}' tes.txt | grep -o '[0-9]*'
output: 21341
grep -o <regex>
仅打印匹配行的匹配部分,每个这样的部分都在单独的输出行上。查看更多详情。
要提取
=
后面的部分,请将输出通过管道传输到cut
:
awk '{print $8}' tes.txt | cut -d= -f2
awk '{split ($8, s, "="); print s[2]}' tes.txt
output: 21341
您可以使用
sub
中的awk
功能来做到这一点。
awk '{sub(/^.*=/,"",$8);print $8}' tes.txt
sub(/^.*=/,"",$8)
:去掉“=”之前的模式,就得到数字部分。
这是一个 grep 解决方案:
grep -oP '(?<=size=)\d+' file
目前它会搜索整个文件,因此如果您想将其限制为某一特定行,则必须先使用 awk。