bash shell脚本从包含引号的字符串中获取子字符串

bash shell脚本从包含引号的字符串中获取子字符串

我有一个名为的文件stuff.txt。该文件中有多个行。这是该文件中的其中一行"somevalue": "4.2.1"。我正在创建一个 shell 脚本来获取第二组双引号之间的值 (4.2.1)。以下是我目前在 shell 脚本中的内容:

substringVal=$(grep '\"somevalue\": \"' stuff.txt)

此代码片段将值存储"somevalue": "4.2.1"在我的变量中substringVal,但我只想substringVal包含4.2.1。我不知道子字符串有多长,所以我不能只从某个索引开始取一定数量的字符的子字符串。

我看过了awk,但无法让它为我工作。如果有人能指出如何修改我的 shell 脚本中的命令以从我要查找的行中获取子字符串的正确方向,我将不胜感激。提前致谢。

答案1

对我来说,它是这样工作的:

substringVal=$(grep '\"somevalue\": \"' stuff.txt)
echo $substringVal

"somevalue": "4.2.1"
echo $substringVal | awk -F": " '{print $2}' | sed 's/\"//g'
4.2.1

因此 awk 命令会跳过所有内容,直到“:”分隔符。而 sed 会删除最后一个双引号。

相关内容