`
天梯梦
  • 浏览: 13729862 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)

 
阅读更多

 

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'

 

 这里使用了perl语言,使用-e加上一段代码,从而批量地将当前目录及所有子目录下的file.log文件中的string1替换成了string2; string支持正则表达式
 

3. awk

grep -i "windows" -r ./path | awk -F : '{print $1}' | sort | uniq | xargs sed -i 's/windows/linux/g'
 这里使用了shell命令,先查找出文件,再用awk分割(以:切分),再行替换!
注意:   grep可以使用正则,也可以使用\转义一些特殊字符,比如“等  
sed -i 's/\"localhost\"/\"10.2.2.2\"/g' /home/my.conf
更多:

 

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" 

 

 

分享到:
评论

相关推荐

    字符串查找替换(批量任何文件)

    5. 任何文件:这里指的是任何类型的文件,无论是文本文件(如.txt、.csv)、源代码文件(如.java、.py)还是其他格式,只要内容包含可搜索的字符串,都可以进行查找和替换。 二、实现方法 1. 文本编辑器:许多文本...

    linux下perl,sed,shell批量替换文件内容.docx

    Linux 下批量替换文件内容的多种方法 在 Linux 系统中,批量替换文件内容是一项常见的任务,特别是在开发和维护大型项目时。下面将介绍三种方法来批量替换文件内容,即使用 Perl、sed 和 shell 命令。 方法 1:...

    批量查找文件内容替换

    例如,`grep -rl "search_string" /path/to/directory | xargs sed -i 's/search_string/replacement/g'` 这个命令组合能全局查找并替换目录下所有文件中的内容。 5. **注意事项**: - 在进行批量替换时,务必先...

    多行批量字符替换 可替换任何文件里的字符串 特色在多行替换

    批量字符替换的基本原理是通过读取文件内容,查找并定位到需要替换的字符或字符串,然后用预设的新字符或字符串进行替换,最后将修改后的内容写回文件。这个过程可以自动化执行,大大减少了手动操作的时间和错误率。...

    linux下批量替换文件内容的方法.docx

    Linux 下批量替换文件内容的方法 在 Linux 系统中,批量替换文件内容是非常常见的操作。通常,我们可以使用 sed 命令来实现单个文件的内容替换,但当需要批量替换某个文件夹下所有文件时,需要借助 grep 命令来实现...

    linux下批量替换文件中的内容.docx

    例如,要将当前目录下的所有文件中的"netingcn"字符串批量替换为".netingcn",可以使用以下命令: ``` grep netingcn -rl /assign-path | xargs sed -i s/netingcn/.netingcn/g ``` 或 ``` sed -i s/netingcn/....

    超级字符串批量替换工具

    在使用"超级字符串批量替换工具_1.6"时,用户首先需要导入或指定待处理的文件或目录,然后设定查找和替换的字符串,可以选择是否启用正则表达式。确认设置无误后,点击执行按钮,工具将自动完成所有替换工作。此外,...

    Linux_sed_批量替换字符串方法

    ### Linux sed 批量替换字符串方法详解 #### 一、sed简介 `sed`(stream editor)是一款功能强大的文本处理工具,在Linux系统中被广泛应用于批量处理文本文件,特别是进行字符串查找、替换等操作。本文将详细介绍...

    Linuxsed批量替换字符串方法.pdf

    sed支持正则表达式,可以快速地对文件中的特定字符串进行查找和替换,批量修改文件内容等操作。下面详细介绍sed命令在批量替换字符串方面的几种常见方法。 1. 基础替换 sed的替换功能基本语法是`sed 's/原字符串/新...

    Linuxsed批量替换字符串方法[归类].pdf

    这个命令是用来批量替换`/modules`目录下所有文件中的`zhangsan`为`lisi`的。具体解释如下: - `-i`:表示就地编辑(inplace edit),直接修改原文件,不生成备份。如果不想直接修改原文件,可以去掉这个选项。 - `...

    linux中批量查找替换文本内容例子.docx

    这将查找当前目录下所有文件名中包含某个字符串的文件,并将其替换为另一个字符串。 11. 使用 vim 批量替换文本 vim 编辑器可以批量替换文本,例如: `:s/XXX/YYY/g` 这将将当前行中的所有 XXX 替换为 YYY。 `:...

    java 文本字符串替换工具

    需要注意的是,如果要在多个文件中进行批量替换,你可能需要将上述代码封装到一个循环或递归函数中,遍历指定目录下的所有文件。同时,为了防止意外覆盖,可以考虑先备份原始文件,或者将替换后的内容写入新的文件。...

    linux从指定ID批量替换sql文件中记录的方法.docx

    在Linux环境中,有时候我们需要对SQL文件中的特定记录进行批量替换,比如当数据库的ID需要从某个数值开始递增时。本文档介绍了如何通过Linux命令行工具来实现这一目标。 首先,假设我们有一个名为`online.sql`的...

    一次查找替换文本中多个字符串

    这个小工具,"一次查找替换文本中多个字符串",是Java编程语言实现的一个实用程序,它专门针对那些需要批量处理文本文件,查找并替换特定字符串的用户。Java作为一种跨平台的语言,使得这个工具可以在不同的操作系统...

    字符串查找替换专业版工具

    在许多IT工具中,简短的命令行标识符常用于执行特定的功能,如grep命令在Linux中用于搜索文本文件,这里"chrepv"很可能有着类似的功能,即快速查找并替换字符串。用户可以通过输入相应的参数和指令,实现对文本文件...

    shell 批量处理 字符串指令行

    - 数据清理:批量替换或删除文件中的特定字符或字符串。 - 自动化配置:根据模板文件生成多份配置文件,只需改变其中的某些变量。 例如,以下是一个简单的示例脚本,它读取`curl-test.txt`文件,将所有URL中的`...

    批量替换文件名里的字符包括子目录

    标题"批量替换文件名里的字符包括子目录"指向的就是一个这样的需求:如何在一个文件夹及其所有子目录中,查找并替换所有文件名中的特定字符或字符串。这个过程通常涉及到文件系统的操作和编程技术。 批量替换文件名...

    超级批量文本替换,可以快速查询,替换内容

    批量文本替换的基本原理是通过算法遍历文本文件中的每一个字符,查找预设的查询字符串,一旦找到匹配项,就用指定的新字符串进行替换。这种操作在处理大型文本文件或者多个文件时尤其有用,因为手动逐个文件操作会...

    好用的字符替换工具,用于批量替换文本

    批量替换的核心是字符串查找与替换算法,如KMP(Knuth-Morris-Pratt)或Boyer-Moore算法,这些算法能够在大规模文本中快速定位目标字符或字符串,并进行替换。在“好用的字符替换工具”中,可能采用了类似的高效算法...

    文本内容 批量替换 很好用的!!

    用户可以指定查找的字符串和替换的字符串,然后应用到整个项目或文件夹内的所有文件,大大提高了工作效率。 2. **命令行工具**:在命令行环境中,比如Windows的PowerShell或Linux的grep、sed命令,可以实现批量替换...

Global site tag (gtag.js) - Google Analytics