Unixでファイル形式を指定するときのデータクリーンアップを防ぐ方法

Unixでファイル形式を指定するときのデータクリーンアップを防ぐ方法

次の形式のファイルがあります

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

上記のファイルを以下のようにフォーマットする必要があります。

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

データからスペースを削除したくありません。データターミネーターの前にある追加スペース(パイプ)を削除したいと思います。

答え1

sed1つのオプションは、「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

関連情報