我有一个日志文件,格式如下:
pseudo=thierry33 pseudoConcat=thierry33
pseudo=i love you pseudoConcat=i love you
我想返回pseudo
和pseudoConcat
之间的所有字符串,我想要的输出是:
thierry33
i love you
如何使用sed或awk执行此操作?我试了几天都是徒劳的。 感谢。
答案 0 :(得分:1)
使用sed:
sed -r 's/pseudo=(.*[^ ]) +pseudoConcat.*/\1/'
说明:
+
,()
没有反斜杠pseudo=
()
之后捕获字符串
[^ ]
+pseudoConcat
\1
作为替换答案 1 :(得分:0)
使用GNU grep:
grep -oP '(?<=pseudo=).*?(?= *pseudoConcat)' file
没有尾随空格的输出:
thierry33 i love you
使用bash:
while read -r line; do [[ $line =~ pseudo=(.*?[^\ ])\ *pseudoConcat ]] && echo "${BASH_REMATCH[1]}"; done < file