我正在尝试从某个标记中包含它们的文件中提取数据/网址(在本例中为 someurl ),即
xyz>someurl>xyz
我不介意使用awk
或sed
。
答案 0 :(得分:7)
我认为最好,最简单的方法是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<something2<something3
的块并打印第二个。
答案 1 :(得分:0)
grep诞生于提取事物:
kent$ echo "xyz>someurl>xyz"|grep -Po '>\K[^>]*(?=>)'
someurl
你当然可以用炸弹杀死苍蝇:
kent$ echo "xyz>someurl>xyz"|awk -F\> '$0=$2'
someurl
答案 2 :(得分:0)
如果您的grep
支持P
选项,那么您可以使用前瞻和后瞻性正则表达式来识别url
。
$ echo "xyz>someurl>xyz" | grep -oP '(?<=xyz>).*(?=>xyz)'
someurl
这只是一个让你开始而不是最终答案的样本。