EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: 请问如何用perl或者tcl进行批量文件中的字符串的替换 [打印本页]

作者: stone101    时间: 2015-2-2 16:32
标题: 请问如何用perl或者tcl进行批量文件中的字符串的替换
本帖最后由 stone101 于 2015-2-2 16:41 编辑

现在需要在linux系统下对一批文件进行批处理,就是挨个对每个文件打开,替换其中的某些字符串,然后保存。
具体替换的内容为:
空格N空格  替换为 空格N18空格
空格P空格   替换为 空格P18空格
空格DN空格 替换为 空格NDIO18空格

因为打空格看不见所以用汉字写出来了
作者: nicklee523    时间: 2015-2-3 00:22
本帖最后由 nicklee523 于 2015-2-3 00:26 编辑

如果你的这批文件都在同一个路径下,又有类似的文件名以便wildcard匹配(假设都叫 NP*.txt)
那把几个sed指令写进一个shell script就可以了:

   

        

                
  1. #!/usr/bin/csh
  2. sed -i "s/ N / N18 /g" NP*.txt
  3. sed -i "s/ P / P18 /g" NP*.txt
  4. sed -i "s/ DN / NDIO18 /g" NP*.txt
            

   

    复制代码

也可以在每个-i后面加一个后缀名作为backup,如 sed -i.bk xxxxxx
作者: stone101    时间: 2015-2-4 10:44
回复 2# nicklee523


   谢谢啦,文件名字比较接近,都是*.cdl
作者: stone101    时间: 2015-2-4 10:49
回复 2# nicklee523


   请问这个shell 如何使用呢,是写在一个文本里面,然后在terminal里面用csh命令调用吗?还是用source命令调用呢
作者: stone101    时间: 2015-2-4 11:36
回复 2# nicklee523


   已经弄好了,会用了,谢谢啦
作者: nicklee523    时间: 2015-2-4 23:15
回复 5# stone101


    恩。第一行的意思就是告诉它用cshell执行。
你也可以给这个script添加可执行的权限,再把它丢到一个$PATH里定义的路径下。然后直接输名字就可以执行了
作者: xwwwjy    时间: 2015-6-3 23:24


   
如果你的这批文件都在同一个路径下,又有类似的文件名以便wildcard匹配(假设都叫 NP*.txt)
那把几个sed指 ...
nicklee523 发表于 2015-2-3 00:22




   请问sed是什么意思? 小骆驼书里第几章讲它 我没找到
作者: 小武哥225    时间: 2015-9-22 22:28
回复 7# xwwwjy


   那个脚本是 shell script, 不是 perl script




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5