首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash -删除从特定字符串开始的整个文件内容

Bash -删除从特定字符串开始的整个文件内容
EN

Stack Overflow用户
提问于 2020-04-10 00:26:53
回答 1查看 52关注 0票数 1

我在一个yml文件中有一个包含:# base config的字符串。现在,我想从这个文件中删除从这个特定字符串开始的所有内容。我也想删除这个字符串。有相应的命令吗?

bash文件

代码语言:javascript
运行
复制
for filename in ./config/*.yml; do
    if grep -qxF "# base config" $filename
    then
        echo "has base config, will replace it"
        sed -i "" "# base config/q" $filename # this does not do anything
    else
        echo "has NOT base config, will add it"
        cat $base_config >> $filename
    fi
done
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 00:33:28

使用sed:

代码语言:javascript
运行
复制
sed -n '/#base config/q;p' file

或者使用awk:

代码语言:javascript
运行
复制
awk '/#base config/{exit};1' file

因此,您可以将脚本中的sed行替换为以下两行:

代码语言:javascript
运行
复制
sed -n '/#base config/q;p' "$filename" > tmpfile
mv tmpfile "$filename"

请注意,我用双引号引用了变量,这是很好的做法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61125786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档