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"
相关推荐
5. 任何文件:这里指的是任何类型的文件,无论是文本文件(如.txt、.csv)、源代码文件(如.java、.py)还是其他格式,只要内容包含可搜索的字符串,都可以进行查找和替换。 二、实现方法 1. 文本编辑器:许多文本...
Linux 下批量替换文件内容的多种方法 在 Linux 系统中,批量替换文件内容是一项常见的任务,特别是在开发和维护大型项目时。下面将介绍三种方法来批量替换文件内容,即使用 Perl、sed 和 shell 命令。 方法 1:...
例如,`grep -rl "search_string" /path/to/directory | xargs sed -i 's/search_string/replacement/g'` 这个命令组合能全局查找并替换目录下所有文件中的内容。 5. **注意事项**: - 在进行批量替换时,务必先...
批量字符替换的基本原理是通过读取文件内容,查找并定位到需要替换的字符或字符串,然后用预设的新字符或字符串进行替换,最后将修改后的内容写回文件。这个过程可以自动化执行,大大减少了手动操作的时间和错误率。...
Linux 下批量替换文件内容的方法 在 Linux 系统中,批量替换文件内容是非常常见的操作。通常,我们可以使用 sed 命令来实现单个文件的内容替换,但当需要批量替换某个文件夹下所有文件时,需要借助 grep 命令来实现...
例如,要将当前目录下的所有文件中的"netingcn"字符串批量替换为".netingcn",可以使用以下命令: ``` grep netingcn -rl /assign-path | xargs sed -i s/netingcn/.netingcn/g ``` 或 ``` sed -i s/netingcn/....
在使用"超级字符串批量替换工具_1.6"时,用户首先需要导入或指定待处理的文件或目录,然后设定查找和替换的字符串,可以选择是否启用正则表达式。确认设置无误后,点击执行按钮,工具将自动完成所有替换工作。此外,...
### Linux sed 批量替换字符串方法详解 #### 一、sed简介 `sed`(stream editor)是一款功能强大的文本处理工具,在Linux系统中被广泛应用于批量处理文本文件,特别是进行字符串查找、替换等操作。本文将详细介绍...
sed支持正则表达式,可以快速地对文件中的特定字符串进行查找和替换,批量修改文件内容等操作。下面详细介绍sed命令在批量替换字符串方面的几种常见方法。 1. 基础替换 sed的替换功能基本语法是`sed 's/原字符串/新...
这个命令是用来批量替换`/modules`目录下所有文件中的`zhangsan`为`lisi`的。具体解释如下: - `-i`:表示就地编辑(inplace edit),直接修改原文件,不生成备份。如果不想直接修改原文件,可以去掉这个选项。 - `...
这将查找当前目录下所有文件名中包含某个字符串的文件,并将其替换为另一个字符串。 11. 使用 vim 批量替换文本 vim 编辑器可以批量替换文本,例如: `:s/XXX/YYY/g` 这将将当前行中的所有 XXX 替换为 YYY。 `:...
需要注意的是,如果要在多个文件中进行批量替换,你可能需要将上述代码封装到一个循环或递归函数中,遍历指定目录下的所有文件。同时,为了防止意外覆盖,可以考虑先备份原始文件,或者将替换后的内容写入新的文件。...
在Linux环境中,有时候我们需要对SQL文件中的特定记录进行批量替换,比如当数据库的ID需要从某个数值开始递增时。本文档介绍了如何通过Linux命令行工具来实现这一目标。 首先,假设我们有一个名为`online.sql`的...
这个小工具,"一次查找替换文本中多个字符串",是Java编程语言实现的一个实用程序,它专门针对那些需要批量处理文本文件,查找并替换特定字符串的用户。Java作为一种跨平台的语言,使得这个工具可以在不同的操作系统...
在许多IT工具中,简短的命令行标识符常用于执行特定的功能,如grep命令在Linux中用于搜索文本文件,这里"chrepv"很可能有着类似的功能,即快速查找并替换字符串。用户可以通过输入相应的参数和指令,实现对文本文件...
- 数据清理:批量替换或删除文件中的特定字符或字符串。 - 自动化配置:根据模板文件生成多份配置文件,只需改变其中的某些变量。 例如,以下是一个简单的示例脚本,它读取`curl-test.txt`文件,将所有URL中的`...
标题"批量替换文件名里的字符包括子目录"指向的就是一个这样的需求:如何在一个文件夹及其所有子目录中,查找并替换所有文件名中的特定字符或字符串。这个过程通常涉及到文件系统的操作和编程技术。 批量替换文件名...
批量文本替换的基本原理是通过算法遍历文本文件中的每一个字符,查找预设的查询字符串,一旦找到匹配项,就用指定的新字符串进行替换。这种操作在处理大型文本文件或者多个文件时尤其有用,因为手动逐个文件操作会...
批量替换的核心是字符串查找与替换算法,如KMP(Knuth-Morris-Pratt)或Boyer-Moore算法,这些算法能够在大规模文本中快速定位目标字符或字符串,并进行替换。在“好用的字符替换工具”中,可能采用了类似的高效算法...
用户可以指定查找的字符串和替换的字符串,然后应用到整个项目或文件夹内的所有文件,大大提高了工作效率。 2. **命令行工具**:在命令行环境中,比如Windows的PowerShell或Linux的grep、sed命令,可以实现批量替换...