首页 热点专区 义务教育 高等教育 出国留学 考研考公

linux下有个文件中有几个相同的字符串,我想要用命令替换其中的一个有什么方法,坐等答案

发布网友

我来回答

4个回答

热心网友

引用了stablish 写的一个脚本 :

单纯的依靠mv命令做不到,需要脚本来实现

编写脚本 rename 如下

#----------------------------------------------
#!/bin/sh

ls -l $1 | grep ^[^d] | awk ''| while read line; do
do=`echo $line | grep $2`

if [ ! "$do" = "" ]; then
newname=`echo $line | sed 's/'$2'/'$3'/g'`
echo "rename $line to $newname ..."
mv $1/$line $1/$newname
fi
done
#------------------------------------------------
将以上保存为 rename文件,
然后运行
chmod +x rename
使rename可运行

然后按照如下格式执行rename
假设rename在当前路径
$./rename [fullpathtofiles] .sql.cluster1 .sql

[fullpathtofiles] 指向你的BAOAN102671.sql.cluster1 这些文件的全路径即可

参考以下我的演示 ,将具体路径替换到你的即可,实际测试通过

--------------------------------
root@bogon~/testmv# ls
12343234234.sql.cluster1 323423423423.sql.cluster1 sdfdssddd.sql.cluster1
root@bogon~/testmv# cd ..
root@bogon~# ./rename ./testmv/ .sql.cluster1 .sql
rename 12343234234.sql.cluster1 to 12343234234.sql ...
rename 323423423423.sql.cluster1 to 323423423423.sql ...
rename sdfdssddd.sql.cluster1 to sdfdssddd.sql ...
root@bogon~# cd testmv
root@bogon~/testmv# ls
12343234234.sql 323423423423.sql sdfdssddd.sql

热心网友

sed -i 's/相同字串/替换内容/g' 文件

热心网友

Linux命令可以通常管道|进行命令粘合,上一个命令返回的结果能以参数的形式给下一个命令调用。因此这个答案你可以自己思考练习一下,要知其然才能知其所以然。

热心网友

先vim file
再:1,$s/old/new/g
这样就可以了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com