我有一个名为的文件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 会删除最后一个双引号。