使用AWK或SED在两个字符串之间提取数据
我试图从某个标签ie中包含数据/URL的文件中提取数据/URL(在本例中为-someurl)使用AWK或SED在两个字符串之间提取数据,sed,awk,Sed,Awk,我试图从某个标签ie中包含数据/URL的文件中提取数据/URL(在本例中为-someurl) xyz>someurl>xyz 我不介意使用awk或sed我认为最好、最简单的方法是使用cut: $ echo "xyz>someurl>xyz" | cut -d'>' -f2 someurl 使用awk可以执行以下操作: $ echo "xyz>someurl>xyz" | awk 'BEGIN { FS = ">" } ; { print $2
xyz>someurl>xyz
我不介意使用
awk
或sed
我认为最好、最简单的方法是使用cut
:
$ echo "xyz>someurl>xyz" | cut -d'>' -f2
someurl
使用awk
可以执行以下操作:
$ echo "xyz>someurl>xyz" | awk 'BEGIN { FS = ">" } ; { print $2 }'
someurl
使用sed
有点棘手:
$ echo "xyz>someurl>xyz" | sed 's/\(.*\)>\(.*\)>\(.*\)/\2/g'
someurl
我们得到了
something1块,我认为最好、最简单的方法是cut
:
$ echo "xyz>someurl>xyz" | cut -d'>' -f2
someurl
使用awk
可以执行以下操作:
$ echo "xyz>someurl>xyz" | awk 'BEGIN { FS = ">" } ; { print $2 }'
someurl
使用sed
有点棘手:
$ echo "xyz>someurl>xyz" | sed 's/\(.*\)>\(.*\)>\(.*\)/\2/g'
someurl
我们得到了something1grep生来就是用来提取东西的:
kent$ echo "xyz>someurl>xyz"|grep -Po '>\K[^>]*(?=>)'
someurl
当然,你可以用炸弹杀死一只苍蝇:
kent$ echo "xyz>someurl>xyz"|awk -F\> '$0=$2'
someurl
格雷普生来就是为了提取东西:
kent$ echo "xyz>someurl>xyz"|grep -Po '>\K[^>]*(?=>)'
someurl
当然,你可以用炸弹杀死一只苍蝇:
kent$ echo "xyz>someurl>xyz"|awk -F\> '$0=$2'
someurl
如果您的grep
支持p
选项,那么您可以使用lookahead和lookahead正则表达式来标识url
$ echo "xyz>someurl>xyz" | grep -oP '(?<=xyz>).*(?=>xyz)'
someurl
$echo“xyz>someurl>xyz”| grep-oP'(?).*(=>xyz)'
某物
这只是一个开始的示例,不是最终答案 如果您的grep
支持p
选项,那么您可以使用lookahead和lookahead正则表达式来标识url
$ echo "xyz>someurl>xyz" | grep -oP '(?<=xyz>).*(?=>xyz)'
someurl
$echo“xyz>someurl>xyz”| grep-oP'(?).*(=>xyz)'
某物
这只是一个开始的示例,不是最终答案 嗨,肯特,如果你不介意的话,你能解释一下“>\K[^>]*(?=>)”我假设[^>]表示开始,(?=>)表示结束;剩下的是什么?谢谢[^>]
表示任何字符而不是
,(?=>)
是向前看的。匹配字符后跟>
awk不是炸弹,这正是它的目的。嗨,肯特,如果你不介意的话,你能解释一下“>\K[^>]*(?=>)”我假设[^>]表示开始,(?=>)表示结束;剩下的是什么?谢谢[^>]
表示任何字符而不是
,(?=>)
是向前看的。匹配字符后跟
awk不是炸弹,这正是它的目的。可能与:,尽管示例很难看。可能与:,尽管示例很难看