我有一個 psv 檔案,其中記錄如下:
Apple | Banana | I want to eat banana | Carrot
如您所見,所有列都包含前導和尾隨空格,我使用了此命令:
sed -i -r 's/\s //g;/^$/d' fileName
洗掉空格和空行。之后我得到的結果是:
Apple|Banana|Iwanttoeatbanana|Carrot
我的預期結果有點像這樣:
Apple|Banana|I want to eat banana|Carrot
請幫助我使用 shell 腳本獲得所需的結果。
先感謝您!
uj5u.com熱心網友回復:
你可以使用這個sed:
sed -E 's/^[[:blank:]] |[[:blank:]]*(\|)[[:blank:]]*|[[:blank:]] $/\1/g' file
Apple|Banana|I want to eat banana|Carrot
解釋:
^[[:blank:]]: 開始后匹配 1 個或多個空格|: 或者[[:blank:]]*(\|)[[:blank:]]*: 在 a 之前和之后匹配 0 個或多個空格并在#1 組中|捕獲||: 或者[[:blank:]] $: 在結束前匹配 1 個或多個空格Replacement is a\1` 將組 #1 的捕獲值替換為
一個awk解決方案:
awk -F '[[:blank:]]*\\|[[:blank:]]*' -v OFS='|' '{
gsub(/^[[:blank:]] |[[:blank:]] $/, ""); $1=$1} 1' file
Apple|Banana|I want to eat banana|Carrot
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409667.html
標籤:
