【问题标题】:how to get string between two strings [duplicate]如何在两个字符串之间获取字符串[重复]
【发布时间】:2015-10-09 00:36:51
【问题描述】:

例如,我有一个这样的字符串:

f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361

我想获取“q=”和“&”之间的子字符串,即“aet12462awera”或“q=aet12462awera”也可以。 我尝试使用awk -F'&',但问题是,“q="string 的位置不固定。有时候,我会有

f= .... & l=.... &q=....& h=....

所以我不能使用awk -F'&' '{print $2}' 来获得结果。

无论如何我可以使用 unix 命令来获取它吗? 谢谢!

【问题讨论】:

  • grep -oP '(?<=(?|&)q=)[^&]*' <<< "?$querystring"

标签: linux bash awk grep


【解决方案1】:

这似乎有效:

STRING='f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361'
echo $STRING | awk -F"q=" '{print $2}' | cut -f1 -d"&"

【讨论】:

  • 是的!它成功了!虽然我仍然想知道这是否是最有效的方式?
【解决方案2】:
string='f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361'
IFS='&'
for field in $string; do
    if [ "${field%=*}" = "q" ]; then
        echo ${field#*=}
    fi
done

看看parameter expansionIFS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2021-03-03
    • 2012-12-28
    • 2022-12-13
    • 1970-01-01
    相关资源
    最近更新 更多