我有以下字符串,我想从中提取名称和ID,并将它们存储在变量中。这只是一个例子,列表可以更长,但它们以相同的方式分开。
[["freepbx","NEWUPDATES","There are 6 modules available for online upgrades"],["cidlookup","noauth","OpenCNAM Requires Authentication"]]
字符串中的id是freepbx和cidlookup,名称是NEWUPDATES和noauth。
我希望他们像:
一样出来freepbx NEWUPDATES
cidlookup noauth
我从命令行运行程序需要它以这种方式输入。
非常感谢任何帮助!
答案 0 :(得分:1)
这是一种方法:
echo '[["freepbx","NEWUPDATES","There are 6 modules available for online upgrades"],["cidlookup","noauth","OpenCNAM Requires Authentication"]]' | sed -e 's/\],\[/\n/g' -e 's/\(\[\[\)*"//g' | awk -F ',' '{print $1, $2}'
freepbx NEWUPDATES
cidlookup noauth
<强>解释强>
sed
命令s/\],\[/\n/g
将替换所有使用新行(]
)字符分隔每条记录的[
,\n
。这将允许您将每一行视为一个单独的记录,使所有其他工具更容易:)
第二个sed
命令s/\(\[\[\)*"//g
将删除第一条记录开头的引号和初始[[
。这会从您的数据中清除内容,只在您的字段之间留下,
。
最后,awk
命令-F ',' '{print $1, $2}'
,-F
告诉awk
使用,
作为字段分隔符(而不是空格)和$1
}和$2
打印第一个和第二个字段。
答案 1 :(得分:1)
awk
救援!
$ awk -F'"' -v RS="\\\],\\\[" '{print $2,$4}' file
freepbx NEWUPDATES
cidlookup noauth
答案 2 :(得分:0)