如何在每个数字前插入字符?

如何在每个数字前插入字符?

在文本文件中我有以下内容:

txt txt 12345 12345678
txt 1234

我需要;在每个数字前插入这样的内容:

txt txt;12345;12345678
txt;1234

如何用 或 来做到sedawk一点perl

答案1

一种选择是使用sed反向引用:

sed -E 's/([0-9]+)/;\1/g' <input_file

如果你只想用一个空格在他们面前,使用这个:

sed -E 's/ ([0-9]+)/;\1/g' <input_file

如果你想更换任意数量(0 个或更多)空格在数字前使用这个:

sed -E 's/ *([0-9]+)/;\1/g' <input_file

替换*+1 个或多个空格位于数字之前。

答案2

根据你的例子,你似乎真的想代替空格字符;后面跟着数字。在 Perl 中,您可以使用前瞻断言

$ cat file
txt txt 12345 12345678
txt 1234

$ perl -pe 's/\s(?=\d)/;/g' file
txt txt;12345;12345678
txt;1234

相关内容