linux 批量替换文件内容及查找某目录下所有包含某字符串的文件
转载请注明来源:https://www.cnblogs.com/hookjc/
1. sed
- grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'
例如:
对象:文件夹
- grep -rl 'windows' ./path | xargs sed -i 's/windows/linux/g'
2. find
对象:文件
- find -name 'test' | xargs perl -pi -e 's|windows|linux|g'
3. awk
- grep -i "windows" -r ./path | awk -F : '{print $1}' | sort | uniq | xargs sed -i 's/windows/linux/g'
这里使用了shell命令,先查找出文件,再用awk分割(以:切分),再行替换!
sed replace word / string syntax
The syntax is as follows:
- sed -i 's/old-word/new-word/g' *.txt
GNU sed command can edit files in place (makes backup if extension supplied) using the -i option. If you are using an old UNIX sed command version try the following syntax:
- sed 's/old/new/g' input.txt > output.txt
You can use old sed syntax along with bash for loop:
- #!/bin/bash
- OLD="xyz"
- NEW="abc"
- DPATH="/home/you/foo/*.txt"
- BPATH="/home/you/bakup/foo"
- TFILE="/tmp/out.tmp.$$"
- [ ! -d $BPATH ] && mkdir -p $BPATH || :
- for f in $DPATH
- do
- if [ -f $f -a -r $f ]; then
- /bin/cp -f $f $BPATH
- sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
- else
- echo "Error: Cannot read $f"
- fi
- done
- /bin/rm $TFILE
A Note About Bash Escape Character
A non-quoted backslash \ is the Bash escape character. It preserves the literal value of the next character that follows, with the exception of newline. If a \newline pair appears, and the backslash itself is not quoted, the \newline is treated as a line continuation (that is, it is removed from the input stream and effectively ignored). This is useful when you would like to deal with UNIX paths. In this example, the sed command is used to replace UNIX path "/nfs/apache/logs/rawlogs/access.log" with "__DOMAIN_LOG_FILE__":
- #!/bin/bash
- ## Our path
- _r1="/nfs/apache/logs/rawlogs/access.log"
- ## Escape path for sed using bash find and replace
- _r1="${_r1//\//\\/}"
- # replace __DOMAIN_LOG_FILE__ in our sample.awstats.conf
- sed -e "s/__DOMAIN_LOG_FILE__/${_r1}/" /nfs/conf/awstats/sample.awstats.conf > /nfs/apache/logs/awstats/awstats.conf
- # call awstats
- /usr/bin/awstats -c /nfs/apache/logs/awstats/awstats.conf
The $_r1 is escaped using bash find and replace parameter substitution syntax to replace each occurrence of/ with \/.
perl -pie Syntax For Find and Replace
The syntax is as follows:
- perl -pie 's/old-word/new-word/g' input.file > new.output.file
来源:http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/
linux下查找某目录下所有文件包含某字符串的命令
- #从文件内容查找匹配指定字符串的行:
- $ grep "被查找的字符串" 文件名
- #从文件内容查找与正则表达式匹配的行:
- $ grep –e “正则表达式” 文件名
- #查找时不区分大小写:
- $ grep –i "被查找的字符串" 文件名
- #查找匹配的行数:
- $ grep -c "被查找的字符串" 文件名
- #从文件内容查找不匹配指定字符串的行:
- $ grep –v "被查找的字符串" 文件名
- #从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"linux"的行
- find . -type f -name "*.txt" | xargs grep "linux"
来源:python脚本自动迁移
linux 批量替换文件内容及查找某目录下所有包含某字符串的文件的更多相关文章
- 运维笔记--Linux查找指定目录下某段时间的文件
查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...
- Python3 批量替换文本内容
Python3 批量替换文本内容 示例: # coding:utf8 import os; def reset(): i = 0 path = r"H:\asDemo\workdemo\aw ...
- sql数据库批量替换dedecms内容关键字
之前写了一篇dedecms后台批量替换文章中的关键词,这边我们介绍一下用sql数据库批量替换dedecms内容关键字,当然要求你对数据库比较熟悉,修改前请自行做好备份. 1.更改文章中的内容 upda ...
- 批量替换存储过程内容脚本sp_SqlReplace
开始 在数据库开发过程中,如果某一个表字段名被重命名.那么在使用到该字段的存储过程,对应的表字段名也要修改. 当存在多个存储都有使用该表字段,需要逐个去修改替换,是一件比较繁琐的事情,我们需要一个能实 ...
- 帝国cms 批量替换 字段内容包含的 指定的 关键字 SQL命令
帝国cms 批量替换 字段内容包含的 指定的 关键字update phome_ecms_news_data_1 set newstext=replace(newstext,'原来','现在');
- [bash]查找指定目录下符合格式的txt文件
需求: 查找指定目录下符合yyyy-MM-dd(-b)NNN.txt格式的文件,如“2020-03-22-b888.txt” 目标目录内容: [root@localhost bashs]# ll /r ...
- C++查找指定目录下所以指定类型的文件
/*************************************************************** 函数名称:FindFile 查找指定目录下指定文件 输入:fileNa ...
- python_自动查找指定目录下的文件或目录的方法
代码如下 import os def find_file(search_path, file_type="file", filename=None, file_startswith ...
- CustomEditor的文件要放在Assets/Editor目录下
using UnityEditor; using UnityEngine; [CustomEditor(typeof(test))] public class testEditor : Editor ...
随机推荐
- 编写Java程序,实现字符串统计和处理
返回本章节 返回作业目录 需求说明: 在控制台输入纯字符的字符串,输出当前字符串的长度. 统计出该字符串中出现相同字母次数最多的字母(不考虑不同字母出现次数相同的情况). 将出现最多次数的字母字母替换 ...
- Java基础周测题,输入一个整数,输出所有能整除该整数的结果:
需求说明: 输入一个整数,输出所有能整除该整数的结果: 实现代码: package demo; import java.util.Scanner; public class test1 { publi ...
- Asp.Net Core 使用Monaco Editor 实现代码编辑器
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著 ...
- Kafka基础教程(三):C#使用Kafka消息队列
接上篇Kafka的安装,我安装的Kafka集群地址:192.168.209.133:9092,192.168.209.134:9092,192.168.209.135:9092,所以这里直接使用这个集 ...
- Swoole 中使用通道(Channel)实现协程间通讯(消息队列)
通道 Coroutine\Channel 使用本地内存,不同的进程之间内存是隔离的. 只能在同一进程的不同协程内进行 push 和 pop 操作. Co::set(['hook_flags'=> ...
- YCSB_对mongodb做性能测试
1.YCSB介绍 YCSB,全称为"Yahoo!Cloud Serving Benchmark",是雅虎开发的用来对云服务进行基础测试的工具,其内部涵盖了常见的NoSQL数据库产品 ...
- 学习git&github
详细学习视频: 链接:https://pan.baidu.com/s/1Vub3YTo7uUUuGCJUCabBRQ 提取码:6q9x 一.git基本工作流程 我们先来理解下Git 工作区.暂存区和版 ...
- Django_静态资源配置和ajax(九)
一.静态资源配置 静态资源的相关配置都在项目目录下的 settings.py 文件中进行配置.配置参数如下: # 浏览器访问静态资源时的路径 STATIC_URL = '/static2/' # 存放 ...
- Xshell 6 首次连接虚拟机 CentOS 7.6报错:/usr/bin/xauth: file /root/.Xauthority does not exist
使用 Xshell 6 首次连接虚拟机 CentOS 7.6 出现这样的提示: /usr/bin/xauth: file /root/.Xauthority does not exist 解决: 只需 ...
- 关于 Intel CPU 和Iris Xe Graphics的报告问题
关于 Intel CPU 和Iris Xe Graphics的报告问题 有些用户报告了一些技术问题,这里有更多的信息和如何解决. Intel 11th CPU & Iris Xe Graphi ...