在第一列中查找并替换多个文本文件的标点符号

时间:2011-10-28 13:12:34

标签: perl replace punctuation

需要类似于此帖子(Find and replace a particular term in multiple files)的解决方案,但需要在每个分隔标签文本文件的第一列中替换标点字符。

示例:

file1.txt
afile2.txt
3file.txt
...

所有其他文件名以.txt

结尾

txt文件的格式在列之间有一个“制表符”,如下所示:

aaaa:bbb    second_column    third_column
w:xyz    another_second_column    another_third_column

我需要将第一列中的:替换为另一个字符,例如##

请帮忙。

perl是否将:字符视为列切割器?

1 个答案:

答案 0 :(得分:3)

将第##行替换为第一个制表符分隔列中的第一个冒号:

perl -i.bak -pe's/^([^\t:]*):/$1##/' *.txt

它处理当前目录中保存备份版本为.bak-files的所有.txt文件。

这是一个不需要捕获的变体(@Brad Gilbert在评论中提出):

perl -i.bak -pe's/^[^\t:]*\K:/##/' *.txt

两个脚本都会产生相同的结果。