我有一个以下格式的文件
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