Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配键值对的Shell命令_Regex_Shell_Scripting - Fatal编程技术网

Regex 匹配键值对的Shell命令

Regex 匹配键值对的Shell命令,regex,shell,scripting,Regex,Shell,Scripting,我有一个文件,其中包含一个key=value对的列表,每个对都在自己的行上。使用shell命令获取指定键的值的最佳方法是什么?如何 grep "key" my_file | cut -d'=' -f2 这就是我在ksh中的做法 FOO=$(grep "^key=" $filename | awk -F"=" '{print $2}') 您也可以使用剪切代替awk。如果用空格分隔密钥对,则可以删除-F“=” 输出 $ ./shell.sh Enter key to fetch: key1 va

我有一个文件,其中包含一个
key=value
对的列表,每个对都在自己的行上。使用shell命令获取指定键的值的最佳方法是什么?

如何

grep "key" my_file | cut -d'=' -f2

这就是我在ksh中的做法

FOO=$(grep "^key=" $filename | awk -F"=" '{print $2}')
您也可以使用剪切代替awk。如果用空格分隔密钥对,则可以删除-F“=”

输出

$ ./shell.sh
Enter key to fetch: key1
value for key1 is value1
或者您可以直接使用shell(例如bash)

read-r-p“Enter key to fetch:”键
而IFS=“=”读取-r k v
做
中的“$k”格
*键的“$key”*)echo“值:$k是$v”;;
以撒

完成grep可以省略。awk可以做到这一切
awk-F“=”'/^key=/{print$2}'
bourne、C或bash Shell我最终得到了这样一个结果:grep“key”filename | sed'/key=/'可能甚至不需要regexp:
awk…'$1==k{print$2}文件
取决于。如果OP需要精确匹配。如果不是,则使用regexp。OP可以用regexp实现一个SQL“like”等价物。如果文件有一个key=value参数的水平列表,该怎么办?海报上说“每个参数都有自己的行”。但是,是的,如果每条线路有多条线路,那么这将不起作用。
$ ./shell.sh
Enter key to fetch: key1
value for key1 is value1
read -r -p "Enter key to fetch: " key    
while IFS="=" read -r k v
do
    case "$k" in
        *"$key"* ) echo "value of key: $k is $v";;
    esac
done <"file"