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