首页 > 解决方案 > 从文件 bash 中获取特定的字符串行

问题描述

我有一个带有这种带有模式的文本的文件

[{"foo":"bar:baz:foo*","bar*":"baz*","etc":"etc"},
{"foo2":"bar2:baz2:foo2*","bar2*":"baz2*","etc":"etc"},
{"foo3":"bar3:baz3:foo3*","bar3*":"baz3*","etc":"etc"},
{"foo4":"bar4:baz4:foo4*","bar4*":"baz4*","etc":"etc"}]

我需要像这样获取每个字符串 {"foo":"bar:baz:foo*","bar*":"baz*","etc":"etc"}并通过 curl 将每个字符串发送到某个 url

for i in text.txt
do (awk,sed,grep etc)
then curl $string

我无法弄清楚如何在没有不必要符号的情况下从文件中正确获取所需的行

标签: jsonbashsedgrepjq

解决方案


使用jq命令。这只是示例解析。

for k in $(jq -c '.[]' a.txt); do
    echo "hello-" $k
done

输出:

hello- {"foo":"bar:baz:foo*","bar*":"baz*","etc":"etc"}
hello- {"foo2":"bar2:baz2:foo2*","bar2*":"baz2*","etc":"etc"}
hello- {"foo3":"bar3:baz3:foo3*","bar3*":"baz3*","etc":"etc"}
hello- {"foo4":"bar4:baz4:foo4*","bar4*":"baz4*","etc":"etc"}

你可以使用$k你想要的循环内的任何地方。

for k in $(jq -c '.[]' a.txt); do
    curl -d "$k" <url>
done

推荐阅读