linux中批量替换命令 linux批量替换文件中的字符串

shell :linux sed 批量替换字符串Linux下批量替换多个文件中linux中批量替换命令的字符串的简单方法 。用sed命令可以批量替换多个文件中的字符串 。
命令如下:
sed -i "s/原字符串/新字符串/g"grep 原字符串 -rl 所在目录
例如:linux中批量替换命令我要把www目录下的所有文件里的 charset=gb2312 替换为 charset=UTF-8linux中批量替换命令,执行命令:
sed -i "s/charset=gb2312/charset=UTF-8/g" `grep charset=gb2312 -rl /www`
即可 。
解释一下:
-i 表示inplace editlinux中批量替换命令 , 就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
这个命令组合很强大linux中批量替换命令,要注意备份文件 。
Linux命令之sed-替换字符串1. sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' csv2drds-TF_B_PAYLOG_D.json
---指定文件替换,将文件中的CANCEL_TIME替换成CANCEL_RECV_TIME;
2. sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' `grepCANCEL_TIME -rl ./*TF_B_PAYLOG_D*.json`
---批量文件替换,递归查找含CANCEL_TIME的文件 , 将所有文件中的CANCEL_TIME替换成CANCEL_RECV_TIME;
3. sed -i 's/\/tmp\/ditagent\/TF_B_PAYLOG_D.csv/\/vdata\/datapre\/281\/'"$filename"'/g' $jsonname
---带/的字符串替换,将/tmp/ditagent/TF_B_PAYLOG_D.csv替换成/vdata/datapre/281/'"$filename"'
4. sed -i 's/^/beginstring/g' *.txt
---在所有行首添加字符串;
5.sed -i 's/$/endstring/g' *.txt
---在所有行末添加字符串
6. sed -i '2s/原字符串/替换字符串/g' *.txt
---替换第2行
7. sed -i '$s/原字符串/替换字符串/g' *.txt
---替换最后一行
8. sed -i'2,5s/原字符串/替换字符串/g' *.txt
【linux中批量替换命令 linux批量替换文件中的字符串】 ---替换2到5行
9. sed -i'2,$s/原字符串/替换字符串/g' *.txt
---替换2到最后一行
10. sed's/\x80/|/g'test.dat |iconv -f gbk -t utf-8testutf8.dat
---把test.dat中的欧元符号替换成竖线 , 再将文件gbk格式转成utf8
-i选项是直接在文件中替换,不在终端输出;
-r选项是所给的path中的目录递归查找;
-l选项是输出所有匹配到oldstring的文件;
s/表示替换
/g表示全局替换
如何使用 sed 或类似工具批量替换文件中的数值并每次加 1?grep命令可以查找单个文件或文件夹下文件中的内容,使用参数“r”或“-R”可以递归查找指定文件夹下的所有文件;参数“l”可以让grep输出包含指定字符串的文件名,首次匹配成功后立刻停止对同文件的查询 。如果不使用“l“,grep查询单个文件时输出文件中所有包含指定字符串的行,对文件夹查询时则按照“文件名:包含字符串行”的方式输出 。
有了上面提到的知识,执行批量替换的命令可以写为:
grep "netingcn" -rl /assign-path | xargs sed -i's/netingcn/'

sed -i 's/netingcn/' `grep "netingcn" -rl /assign-path`
还有一种比较复杂的写法:
grep "netingcn" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i's/netingcn/'
其中命令awk用于分割字符串、uniq对结果进行除重 。
、网络上现成的资料
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
linux sed 批量替换多个文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.***.net为***.net
sed -i "s/www.***.net/***.net/g" `grep www.***.net -rl /home`
exp:sed -i "s/shabi/$/g" `grep shabi -rl ./`
2、自己额外附加
2.1 将文件1.txt内的文字“garden”替换成“mirGarden”
# sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单
2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden”
## sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已
关于linux中批量替换命令和linux批量替换文件中的字符串的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读