使用awk匹配以/root/开头并在字符“之前结束的路径;
我有一个命令,它生成一个随机输出,其中有一条路径 我需要用awk提取这个路径。 路径总是以相同的模式开始(假设它总是以/root开始),但其余的可以更改 例如:使用awk匹配以/root/开头并在字符“之前结束的路径;,awk,Awk,我有一个命令,它生成一个随机输出,其中有一条路径 我需要用awk提取这个路径。 路径总是以相同的模式开始(假设它总是以/root开始),但其余的可以更改 例如: error reason 05/30/2017 12:18:37 [74575:45687]: "/root/this/is/my/path/" random text random text random text random text random text random text 要提取/root/this/is/m
error reason 05/30/2017 12:18:37 [74575:45687]: "/root/this/is/my/path/" random text random text random text random text random text random text
要提取/root/this/is/my/path/:我尝试使用grep+awk,方法如下:
command.sh | grep error |awk '/root/{mypath=$6}'.
但后来我发现我的路径并不总是在同一个地方。还有,我不想提取双引号
i need to have /root/this/is/my/path/ not "/root/this/is/my/path/"
任何人都可以帮忙吗?这也可以:
command.sh | awk '/^error/{ for ( i = 1; i <= NF; i++) if ( $i ~ /^"/){ gsub(/"/, "", $i); print $i} }' -
awk解决方案:
command.sh | awk '/^error/{ match($0,/\/root[^"]+/); print substr($0,RSTART,RLENGTH) }'
输出:
/root/this/is/my/path/
您可以采用一种简单的方法:
command.sh | awk -F\" '/^error/{ print $2}'
输出:
/root/this/is/my/path/
请尝试
grep-oP'\d{5}:\d{5}]:“\K[^”]+'
谢谢你们的不同答案,我喜欢第三个答案,因为它非常简单。前两个看起来很有趣,但现在对我来说很复杂。我无论如何都会研究它们,试着理解它们的作用。谢谢。请检查并接受我的回答。:)
/root/this/is/my/path/