基本区切り記号

基本区切り記号

2つの文字列を1行にまとめて区切り|文字として使用したいと思います。を使用してマージできます。区切り文字として文字列をマージawk '{$1,$2,$3$4$5}'する他の方法はありますか?|

入力する:

XXXXXXXX 0 Xxyxhsag | yuiji

出力:

XXXXXXXX 0 Xxyxhsag|yuiji

ベストアンサー1

データに区切られたフィールドが含まれており、|区切り|文字の両側にスペースを含めることができるとします。次に、使用する入力フィールド区切り文字awkは式、つまり文字と横のスペースに一致する式です *[|] *|

単一文字を|出力フィールド区切り文字として使用し、awk出力レコードを強制的に再生成すると(フィールドの1つを設定して)、問題が少なくとも質問で要求された方法で解決されます。

awk -F ' *[|] *' -v OFS='|' '{ $1=$1 }; 1' file

または等しく、

awk -F ' *[|] *' -v OFS='|' '{ $1=$1; print }' file

これをテストしてみてください。

$ cat file
XXXXXXXX 0 Xxyxhsag | yuiji
$ awk -F ' *[|] *' -v OFS='|' '{ $1=$1 }; 1' file
XXXXXXXX 0 Xxyxhsag|yuiji

sed式に似た置換を使用することもできます。

$ sed 's/ *| */|/g' file
XXXXXXXX 0 Xxyxhsag|yuiji

これは、すべての引用符付きフィールドに区切り文字、改行、または引用符が含まれていないテキストまたは「単純な」CSVデータでデータを処理できると仮定します。

おすすめ記事