Text-Processing

合併一行中的兩個字元串,其中 |分隔符

  • October 20, 2021

我想將兩個字元串合併到一行中|作為分隔符。我們可以通過使用awk '{$1,$2,$3$4$5}'來合併,有沒有其他方法來合併使用|作為分隔符的字元串?

輸入:

XXXXXXXX 0 Xxyxhsag | yuiji

輸出:

XXXXXXXX 0 Xxyxhsag|yuiji

假設您的數據包含由 分隔的欄位|,並且分隔|字元可能在任一側都包含空格。然後,您將使用的輸入欄位分隔符awk是表達式 *[|] *,即匹配|字元和任何側翼空格的表達式。

使用單個字元|作為輸出欄位分隔符並強制awk重新創建輸出記錄(通過設置其中一個欄位)將解決您的問題,至少以您在問題中提出的方式。

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 數據,在帶引號的欄位中沒有嵌入分隔符、換行符或引號。

引用自:https://unix.stackexchange.com/questions/673975