bash +从文件中获取标题并对其进行编号

时间:2014-10-13 01:36:25

标签: bash

这会获取文件中的所有标题

$head -n 1 basicFile.csv | tr ',' '\n'
    header1
    header2
    header3
    header4
    header5
    header6
    header7
    header8
    header9
    header10

我想要的是在左侧添加标题号 得到类似的东西:

1:header1
...
10:header10

我该怎么做?

4 个答案:

答案 0 :(得分:3)

head -n 1 basicFile.csv | tr ',' '\n' | cat -n

不是完全您指定的输出,但非常接近。

答案 1 :(得分:1)

使用awk执行此操作的方法可能更短,但这可行:

oldIFS=$IFS   
IFS=','
i=1
for header in $(head -n 1 basicFile.cs); do
  echo ${i}:$header
  ((i++))
done
IFS=$oldIFS

答案 2 :(得分:0)

你可以使用一个简单的计数器和for循环:

COUNTER=1
for h in $(head -n 1 basicFile.csv | tr ',' '\n')
do
   printf "%d:%s\n" "$COUNTER" "$h"
   (( COUNTER++ ))
done

答案 3 :(得分:0)

这取决于,只是shell还是awk足够好?

% cat count_headers
cnt=1 ; head -n 1 "$1" | tr ',' '\n' | while read header ; do 
   printf "%d:%s\n" $cnt "$header"
   cnt=$(($cnt+1))
done
% sh count_headers basicFile.csv
1:...
...
% awk -F, 'NR==1 {for(i=1;i<=NF;i++) print i ":" $i}' basicFile.csv
1:...
...
%