首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不存在字符串的特定文件中插入行?

如何在不存在字符串的特定文件中插入行?
EN

Stack Overflow用户
提问于 2015-08-09 18:40:37
回答 2查看 48关注 0票数 1

我在找一个小剧本的帮助。

我想搜索所有与

代码语言:javascript
复制
/usr/local/directadmin/data/users/*/httpd.conf

用于字符串

代码语言:javascript
复制
centralized.log

如果字符串不存在于文件中,我想在其中插入2行。

目前,我有以下脚本:

代码语言:javascript
复制
#!/bin/bash
if ! grep -q centralized.log /usr/local/directadmin/data/users/*/httpd.conf ; then
sed -i '33iCustomLog /var/log/centralized.log combined' /usr/local/directadmin/data/users/*/httpd.conf && sed -i '65iCustomLog /var/log/centralized.log combined' /usr/local/directadmin/data/users/*/httpd.conf
fi

目前,如果没有在任何文件中找到字符串,则将行插入到所有文件中,如果在至少一个文件中找到字符串,则不会发生任何事情。我是否可以将行添加到字符串不存在的所有文件中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-09 18:46:19

使用循环:

代码语言:javascript
复制
#!/bin/bash

for file in /usr/local/directadmin/data/users/*/httpd.conf ; do
    if ! grep -q centralized.log "$file" ; then
        sed -i '33iCustomLog /var/log/centralized.log combined' "$file"
        sed -i '65iCustomLog /var/log/centralized.log combined' "$file"
    fi
done
票数 0
EN

Stack Overflow用户

发布于 2015-08-10 19:29:31

用GNU awk:

代码语言:javascript
复制
awk -v RS='^$' -v ORS= -i inplace '
{ print }
!/centralized\.log/ {
    print "33iCustomLog /var/log/centralized.log combined"
    print "65iCustomLog /var/log/centralized.log combined"
}
' /usr/local/directadmin/data/users/*/httpd.conf
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31907605

复制
相关文章

相似问题

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