【发布时间】:2011-01-21 01:31:14
【问题描述】:
我有一个文件,其中包含key=value 对的列表,每对都在自己的行中。使用 shell 命令获取指定键的值的最佳方法是什么?
【问题讨论】:
-
bourne、C 或 bash shell
-
我最终得到了这个:grep "key" filename | sed '/key=//'
我有一个文件,其中包含key=value 对的列表,每对都在自己的行中。使用 shell 命令获取指定键的值的最佳方法是什么?
【问题讨论】:
怎么样
grep "key" my_file | cut -d'=' -f2
【讨论】:
这就是我在 ksh 中的做法。
FOO=$(grep "^key=" $filename | awk -F"=" '{print $2}')
您也可以使用 cut 代替 awk。如果你用空格分隔密钥对,你可以去掉 -F"=".
【讨论】:
awk -F"=" '/^key=/{print $2}'
read -r -p "Enter key to fetch: " key
awk -vk="$key" -F"=" '$1~k{ print "value for "k" is "$2} ' file
输出
$ ./shell.sh
Enter key to fetch: key1
value for key1 is value1
或者你可以只使用 shell(例如 bash)
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"
【讨论】:
awk ... '$1 == k {print $2}' file