perl - 删除空格,但保留制表符

标签 perl awk sed

我有一个带有 3 列的制表符分隔的文本文件。

在某些列中,我想删除单个或多个空格。但我想保持每列之间的制表符分隔以及换行符。

我试过

perl -lape 's/\s+//sg

但这会删除所有空格,还有制表符

我的文件看起来像这样
col1 col2    col3
1    test    test
2       test test
3     test    test

而且我要
col1   col2   col3
1      test   test
2      test   test
3      test   test

所以我只想保留不同列之间的制表符,而不是单个空格。我希望这很清楚。

最佳答案

只需删除空格,而不是 \s这也匹配标签:

sed 's/ \+//g' file

如果您想删除这些空格,只要它们出现在制表符之后,请说:
sed 's/\t */\t/g' file

来自 perldoc perlretut :

\s matches a whitespace character, the set [\ \t\r\n\f] and others

关于perl - 删除空格,但保留制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631770/

相关文章:

Perl CSV 散列

arrays - 读取 CSV 文件并保存在二维数组中

regex - 使用 Perl 计算字符串中的连续字符数

bash - 将 Bash Shell 变量传递给 Awk NR 函数

linux - Awk/Sed/Perl - 如果两个连续的列匹配两个模式,则创建一个新行

linux - 当模式在范围内时使用 sed 打印范围?

linux - 使用 sed 输出的特定文件列表在 linux 上创建 tar gz

perl - POSIX 模块的问题

linux - 计算 1kb 窗口的平均值

linux - 如何使用 bash/awk 根据另一个列表的值找到列表中的 X 个最高值?