次の形式のファイルがあります
A |b -c | c | d -c | | |
上記のファイルを以下のようにフォーマットする必要があります。
A|b -c|c|d -c|||
データからスペースを削除したくありません。データターミネーターの前にある追加スペース(パイプ)を削除したいと思います。
答え1
sed
1つのオプションは、「1つ以上のスペースをパイプに置き換えてからパイプに置き換える」を使用することです。そして、そのスペースとパイプが発生するたびにこれを行います。
sed 's/ *|/|/g' < input > output
スペースも削除してください。後ろに管路:
sed 's/ *|/|/g; s/| */|/g' < input > output
答え2
Awk を使用して、入力フィールド区切り文字をスペースで囲まれたパイプに設定し、出力フィールド区切り文字をパイプとして設定できます。
awk 'BEGIN {FS="[ \t]*\\|[ \t]*"; OFS="|"} {$1=$1} 1' file