PIPEシンボル間の複数のスペースはスペースなしで置き換える必要があります。

PIPEシンボル間の複数のスペースはスペースなしで置き換える必要があります。

パイプで区切られたファイルがある場合:

1|123|A |Normal Behaviour Exhibit 
2|345|B|Embedded|delimiter  
3|678|D|dimension 1"
4| |   | | nvalue
5| | | |Missing cvalue

| | すべての項目を置き換えるには、sedやawkなどのUnixツールを使用する必要があります|||上の4行に示すように、記号の間に複数のスペースを含めることができます。

予想出力:

1|123|A |Normal Behaviour Exhibit 
2|345|B|Embedded|delimiter  
3|678|D|dimension 1"
4|||| nvalue
5||||Missing cvalue

次のコマンドを試しましたが、sed期待した結果が得られませんでした。

sed 's/| *|/||/g' S.txt > S1.txt

1|123|A |Normal Behavior Exhibit  
2|345|B|Embedded|delimiter  
3|678|D|dimension 1"
4||   || nvalue
5|| ||Missing cvalue
 

ベストアンサー1

すべてのsedを使用してください:

$ sed 's/|  *|/||/g; s/|  *|/||/g' file
1|123|A |Normal Behaviour Exhibit
2|345|B|Embedded|delimiter
3|678|D|dimension 1"
4|||| nvalue
5||||Missing cvalue

または awk を使用してください。

$ awk '{while( sub(/\| +\|/,"||") );} 1' file
1|123|A |Normal Behaviour Exhibit
2|345|B|Embedded|delimiter
3|678|D|dimension 1"
4|||| nvalue
5||||Missing cvalue

おすすめ記事