在unix中格式化文件时如何避免数据修剪

在unix中格式化文件时如何避免数据修剪

我有一个以下格式的文件

A           |b -c          |   c      |  d  -c | | |

我需要像下面这样格式化上面的文件

A|b -c|c|d  -c|||

请注意,我不想删除数据中的空格。我只想删除数据终止符之前的额外空格,即 | (管道)。

答案1

一种选择是使用sed“用管道替换一个或多个空格,然后用管道替换”——并对这些空格和管道的每次出现执行此操作:

sed  's/  *|/|/g' < input > output

同时删除空格管道:

sed  's/  *|/|/g; s/|  */|/g' < input > output

答案2

您可以使用 Awk,将输入字段分隔符设置为由任意数量的空格包围的管道,并将输出字段分隔符设置为仅一个管道:

awk 'BEGIN {FS="[ \t]*\\|[ \t]*"; OFS="|"} {$1=$1} 1' file

相关内容