需要类似于此帖子(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是否将:
字符视为列切割器?
答案 0 :(得分:3)
将第##
行替换为第一个制表符分隔列中的第一个冒号:
perl -i.bak -pe's/^([^\t:]*):/$1##/' *.txt
它处理当前目录中保存备份版本为.bak-files的所有.txt文件。
这是一个不需要捕获的变体(@Brad Gilbert在评论中提出):
perl -i.bak -pe's/^[^\t:]*\K:/##/' *.txt
两个脚本都会产生相同的结果。