在shell中提取get参数的值

时间:2018-08-12 01:32:00

标签: regex bash shell

我输入的内容可能是dn3321https://domaincom/file?tag=dn3321,我正在尝试使用shell解析标记的值。

好像正则表达式可以解决问题,如果应用正则表达式提取值,并且不只是直接使用值,我将如何编写一个衬里来检测它是否为URL。

2 个答案:

答案 0 :(得分:1)

从这个问题尚不清楚,可能的输入内容是什么样的,但是对于您给出的简单情况,可以使用parameter expansion

#!/usr/bin/env bash

in1='dn3321'
in2='https://domaincom/file?tag=dn3321'

echo "${in1#*=}"
echo "${in2#*=}"
# prints "dn3321" twice

这可以通过删除第一个=及其前面的任何文本来实现。

答案 1 :(得分:0)

如果只需要打印字符串的非常特定的部分(即网址),则可以这样操作:

#!/bin/bash
url="https://domaincom/file?tag=dn3321"

if [[ "$url" =~ "${http,,}" ]] ; then
        tag=$(echo $url | cut -d'=' -f2)
fi

如果您需要更详细的说明,我可以举个例子。