我有一个CSV文件,其标题由两行组成:
A, A, B, B, B
a, b, c, d, e
1, 2, 3, 4, 5
2, 3, 4, 5, 6
我想将标题连接到此表单:
A_a, A_b, B_c, B_d, B_e
1, 2, 3, 4, 5
2, 3, 4, 5, 6
如何在命令行中使用bash,sed等实现?
答案 0 :(得分:4)
Awk
解决方案:
awk 'BEGIN{ FS = OFS = ", " }
NR == 1{ split($0, a, ", "); next }
NR == 2{ for(i=1; i <= NF; i++) $i = a[i]"_"$i }1' file
输出:
A_a, A_b, B_c, B_d, B_e
1, 2, 3, 4, 5
2, 3, 4, 5, 6
答案 1 :(得分:1)
bash解决方案:
#!/bin/bash
argfile=$1
line1=($(sed -n 1s/,//gp $argfile))
line2=($(sed -n 2p $argfile))
line12=()
for ((i=0; i<${#line1[*]}; i++))
do
line12+=${line1[$i]}"_"${line2[$i]}" "
done
echo $line12
sed -n '3,$p' $argfile
输出:
A_a, A_b, B_c, B_d, B_e
1, 2, 3, 4, 5
2, 3, 4, 5, 6