
我有這樣的 CSV 檔案:
name_var;type_var;
id;string;
dt_depot;string;
num_artc;string
我想刪除第一個;
並替換最後一個,,
以便輸出如下所示:
name_var type_var,
id string,
dt_depot string,
num_artc string
答案1
簡單地用sed
替換:
$ sed 's/;$/,/; s/;/ /g' file
name_var type_var,
id string,
dt_depot string,
num_artc string
至於awk
解決方案,如果輸入檔案應該只包含 2 個填充列 - 您可以使用以下awk
表達式:
$ awk -F";" '{ if (NF==3) $2=$2","; print $1,$2 }' file
name_var type_var,
id string,
dt_depot string,
num_artc string
答案2
$ awk -F';' '{sub(/;$/,","); $1=$1} 1' file
name_var type_var,
id string,
dt_depot string,
num_artc string
該腳本更改;
行末尾的每個字符,然後透過向字段分配值來,
將剩餘的每個字符轉換為,這會導致所有輸入字段分隔符(由 設定)更改為輸出字段分隔符(預設為空白)。然後,它透過指定呼叫預設操作 ( ) 的真條件 (1) 來列印目前行。;
,
;
-F';'
print $0
答案3
用awk
類似的東西可以完成這項工作:
awk -F\; '{print $1" "$2","}'
如果您不喜歡最後一個逗號,可以這樣重寫:
awk -F\; '{ if (NF != 2) print $1" "$2","; else print $1" "$2;}'
答案4
使用此命令:
awk '{sub(/;$/,",")sub(/;/," ")}1' file
你得到這個輸出:
name_var type_var,
id string,
dt_depot string,
num_artc string