我有一个添加到文件特定位置的命令。
a="hellotesting"
sed "/^[[:blank:]]*\"testing_$2\": \[$/,/^[[:blank:]]*],*$/ {s/^[[:blank:]]*}$/&`echo $a`/}" $1
这是工作!输出(是一个JSON文件,我不想使用jq)
{
"mytable_test": [
{
"test1": "abc",
"test2": "def",
"test2": "ghi"
}hellotesting
],
"mytable": [
"test1",
"test2",
"test3"
]
}
但我不能把文件的内容。 我的档案:
yeah
is
test
my
script
在我的计划中:
IFS=
a=$(cat file)
sed "/^[[:blank:]]*\"data_$2\": \[$/,/^[[:blank:]]*],*$/ {s/^[[:blank:]]*}$/&`echo $a`/}" $1
我有一个错误:
sed: -e expression #1, char 73: unterminated `s' command
我想要这个输出:
{
"mytable_test": [
{
"test1": "abc",
"test2": "def",
"test2": "ghi"
}yeah
is
test
my
script
],
"mytable": [
"test1",
"test2",
"test3"
]
}
但是,如果我的文件只是:
yeah
我的变量中的cat文件,工作.. 我不明白..
答案 0 :(得分:0)
不完全确定为什么要破坏有效的json,但这就是你可以做的
$ var="yeah\nis\ntest\nmy\nscript"
$ echo "{
"mytable_test": [
{
"test1": "abc",
"test2": "def",
"test2": "ghi"
}hellotesting
],
"mytable": [
"test1",
"test2",
"test3"
]
}" | sed -E "s/hellotesting$/${var}/"
<强>输出强>
{
mytable_test: [
{
test1: abc,
test2: def,
test2: ghi
}yeah
is
test
my
script
],
mytable: [
test1,
test2,
test3
]
}