【发布时间】:2017-06-15 02:26:24
【问题描述】:
我想问一个关于 'awk' 的问题,例如:
awk '{print $8}' tes.txt
output : size=21341,
但我只想 grep 号码“21341”,你能告诉我如何 grep 号码的解决方案吗?
【问题讨论】:
-
正如所写,这毫无意义。你想要 size= 后面的数字吗?
标签: bash awk grep solution any
我想问一个关于 'awk' 的问题,例如:
awk '{print $8}' tes.txt
output : size=21341,
但我只想 grep 号码“21341”,你能告诉我如何 grep 号码的解决方案吗?
【问题讨论】:
标签: bash awk grep solution any
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
【讨论】:
您可以使用awk 中的函数sub 来执行此操作。
awk '{sub(/^.*=/,"",$8);print $8}' tes.txt
sub(/^.*=/,"",$8):去掉“=”之前的模式,得到数字部分。
【讨论】:
sed:
awk '{print $8}' tes.txt|sed 's/.*size=\(.*\),$/\1/'
【讨论】:
这里是一个 grep 解决方案:
grep -oP '(?<=size=)\d+' file
目前它会搜索整个文件,所以如果你想将它限制在一个特定的行,你必须先使用 awk。
【讨论】: