更改 Bash 中数据集变量的值
Change values from a dataset variable in Bash
我是 Bash 的新手,我正在尝试更改文件 data.csv 逗号分隔的列的值。
在数据集中,我有变量 sex
,只有 2 个可能的值 'Female'
和 'Male'
,我想将 Male 转换为 'm',将 Female 转换为 '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
。
awk -F , -v OFS=, '
== "Female" { = "f"}
== "Male" { = "m"} 1' data.csv
# awk
# without header
awk -F, 'BEGIN{OFS=FS}{=="Male" ? ="m" : ="f"}1' data.csv > output1.csv
# with header
awk -F, 'BEGIN{OFS=FS} NR!=1{=="Male" ? ="m" : ="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
我是 Bash 的新手,我正在尝试更改文件 data.csv 逗号分隔的列的值。
在数据集中,我有变量 sex
,只有 2 个可能的值 'Female'
和 'Male'
,我想将 Male 转换为 'm',将 Female 转换为 '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
。
awk -F , -v OFS=, '
== "Female" { = "f"}
== "Male" { = "m"} 1' data.csv
# awk
# without header
awk -F, 'BEGIN{OFS=FS}{=="Male" ? ="m" : ="f"}1' data.csv > output1.csv
# with header
awk -F, 'BEGIN{OFS=FS} NR!=1{=="Male" ? ="m" : ="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