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データでデータを処理できると仮定します。