我是 Bash 的新手,我正在嘗試更改檔案 data.csv 逗號分隔的列的值。
在資料集中,我的變數sex只有 2 個可能的值'Female','Male'并且我想將男性轉換為“m”,將女性轉換為“f”。我試過這個:
#!/bin/bash
sex=$(cut -d , -f 5 data.csv) #I select column 5 related with the variable sex
for i in $sex; do
if [[$i='Female']]; then
$i='f'
fin
done
代碼錯了,不知道怎么修改。
此外,我想data.csv用新的性價值觀來更新我的。
uj5u.com熱心網友回復:
awk -F , -v OFS=, '
$5 == "Female" {$5 = "f"}
$5 == "Male" {$5 = "m"} 1' data.csv
uj5u.com熱心網友回復:
# awk
# without header
awk -F, 'BEGIN{OFS=FS}{$5=="Male" ? $5="m" : $5="f"}1' data.csv > output1.csv
# with header
awk -F, 'BEGIN{OFS=FS} NR!=1{$5=="Male" ? $5="m" : $5="f"}1' data.csv > output1.csv
# bash
while read line
do
line=${line/,Male,/,m,}
line=${line/,Female,/,f,}
echo $line
done < data.csv > output2.csv
# sed
sed 's/,Male,/,m,/; s/,Female,/,f,/' data.csv > output3.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/483480.html
下一篇:Bash腳本函式中的意外輸出
