如何在一行中打印两个字符串之间的东西

时间:2018-04-16 10:13:20

标签: linux awk sed grep

我是linux的新手并尝试在日志中的字符串之间打印。

以下是输入文件:

  2018-04-15 00:01:22  https://abc123456.net;~galv=http%3A%2F%2Fwww.abc.es%sadn.html? Mozilla/5.0

我试图在galv =和?之间打印网址?作为输出:

http%3A%2F%2Fwww.abc.es%sadn.html

任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:-1)

如果您使用:

echo "2018-04-15 00:01:22 https://abc123456.net;~galv=http%3A%2F%2Fwww.abc.es%sadn.html? Mozilla/5.0" | awk -v FS="(~galv=|?)" '{print $2}'

它会给你正确的输出。如需进一步使用,您可以按照以下语法

awk -v FS="(FROM_KEYWORD|TO_KEYWORD)" '{print $2}'

答案 1 :(得分:-1)

试试这个 -

$cat inputfile 2018-04-15 00:01:22 https://abc123456.net;~galv=http%3A%2F%2Fwww.abc.es%sadn.html? Mozilla/5.0

$awk -F'[=,?]' '{ print $2}' inputfile http%3A%2F%2Fwww.abc.es%sadn.html

答案 2 :(得分:-1)

你可以尝试这个awk(我认为所有的awk)

awk '{gsub(/.*galv=|\?.*/,"")}1' infile