0

需要一个类似于这篇文章的解决方案(在多个文件中查找和替换特定术语),但要在每个分隔制表符文本文件的第一列中替换标点符号。

例子:

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

所有其他文件名以 .txt 结尾

txt 文件的格式在列之间有一个“选项卡”,如下所示:

aaaa:bbb    second_column    third_column
w:xyz    another_second_column    another_third_column

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

请帮忙。

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

4

1 回答 1

3

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

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

它处理当前目录中的所有 .txt 文件,将备份版本保存到 .bak 文件中。

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

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

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

于 2011-10-28T13:22:47.120 回答