在文本文件中我有以下内容:
txt txt 12345 12345678
txt 1234
我需要;
在每个数字前插入这样的内容:
txt txt;12345;12345678
txt;1234
如何用 或 来做到sed
这awk
一点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