Bash 替换linux文件中的文本块

Bash 替换linux文件中的文本块,bash,sed,Bash,Sed,我想删除文件中的文本块 文件 我想删除属性chromedriver,它在多行中定义 我试过这个: sed-i的/“chromedriver”(\s |\n |)*“ci-env:/“ci-env::/g”文件 但它不起作用。有没有一种方法可以解决我的问题?sed可以做到这一点吗?使用jq,正如评论中提到的,这是处理JSON的更好方法: jq 'del(.chromedriver)' file > file.tmp && mv -f file.tmp file (在这里猜测

我想删除文件中的文本块

文件

我想删除属性chromedriver,它在多行中定义

我试过这个:

sed-i的/“chromedriver”(\s |\n |)*“ci-env:/“ci-env::/g”文件


但它不起作用。有没有一种方法可以解决我的问题?sed可以做到这一点吗?

使用
jq
,正如评论中提到的,这是处理JSON的更好方法:

jq 'del(.chromedriver)' file > file.tmp && mv -f file.tmp file
(在这里猜测适当的路径,因为您的示例数据太粗略了)

#!/bin/sh

cat >> edcut.txt << EOF
/chromedriver/
ka
/ci-env/
-1
kb
'a,'bd
wq
EOF

ed -s file.json < edcut.txt
#/垃圾箱/垃圾箱

cat>>edcut.txt是json文件吗?你能展示更多的内容吗?无论如何,在使用json时,它比
sed
awk
和其他面向行的unix工具更适合。
#!/bin/sh

cat >> edcut.txt << EOF
/chromedriver/
ka
/ci-env/
-1
kb
'a,'bd
wq
EOF

ed -s file.json < edcut.txt