我有一个看起来像的文件

3 5 t27s60
4 8 s30s40
2 2 t80t10
6 4 s80t10

我想产生一个像
3 5 t27 s60
4 8 s30 s40
2 2 t80 t10
6 4 s80 t10

因此,我将字段分隔符指定为s或t,但我想将这些字符保留在输出中。

最佳答案

快速awk单线:

awk '{gsub(/[st]/," &",$0)}1' input.txt

输出:
3 5  t27 s60
4 8  s30 s40
2 2  t80 t10
6 4  s80 t10

在这里,我们在&命令中使用gsub的特殊含义:它代表了machted表达式。因此,gsub(/[st]/," &",$0)在每个“s”或“t”之前加一个空格

如果重复出现空白是一个问题:
awk '{gsub(/[st]/," &",$0);gsub(/[ ]+/," ",$0)}1' input.txt

这使:
3 5 t27 s60
4 8 s30 s40
2 2 t80 t10
6 4 s80 t10

关于unix - AWK:如何使用列打印字段分隔符(字段分隔符也是一个正则表达式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37596920/

10-13 07:05