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

bash+;从文件中获取标题并对其编号,bash,Bash,这将获取文件中的所有标题 $head -n 1 basicFile.csv | tr ',' '\n' header1 header2 header3 header4 header5 header6 header7 header8 header9 header10 我想要的是在左边添加标题编号 要获得类似于: 1:header1 ... 10:header10 我如何做到这一点?使用awk可能有一种较短的方法,但

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

$head -n 1 basicFile.csv | tr ',' '\n'
    header1
    header2
    header3
    header4
    header5
    header6
    header7
    header8
    header9
    header10
我想要的是在左边添加标题编号 要获得类似于:

1:header1
...
10:header10

我如何做到这一点?

使用
awk
可能有一种较短的方法,但它可以:

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

使用
awk
可能有一种更短的方法,但这是可行的:

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

您只需使用一个简单的计数器和for循环:

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

您只需使用一个简单的计数器和for循环:

COUNTER=1
for h in $(head -n 1 basicFile.csv | tr ',' '\n')
do
   printf "%d:%s\n" "$COUNTER" "$h"
   (( COUNTER++ ))
done
不完全是您指定的输出,但非常接近


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

这取决于,只是外壳还是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:...
...
% 
%cat count\u头
cnt=1;head-n 1“$1”| tr',“\n'|读取页眉时;做
printf“%d:%s\n“$cnt”$header”
cnt=$($cnt+1))
完成
%sh count_headers basicFile.csv
1:...
...

%awk-F,'NR==1{for(i=1;i这取决于壳还是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:...
...
% 
%cat count\u头
cnt=1;标头-n 1“$1”| tr',“\n'|读取标头时;do
printf“%d:%s\n“$cnt”$header”
cnt=$($cnt+1))
完成
%sh count_headers basicFile.csv
1:...
...

%awk-F,'NR==1{(i=1;如果任何标题包含空格,它将给出意外的结果:
for
迭代单词而不是行。标题名称中有空格,这将为每个标题打印一个数字word@glennjackman嗯,很好的一点,这对我来说很好,因为我使用了上面的例子,如果任何头部ers包含空格:
for
迭代单词而不是行。标题名称中有空格,这将为每个字符打印一个数字word@glennjackman嗯,很好的一点,这对我来说很好,因为我使用了上面的示例,标题名称中有空格,这将为每个标题打印一个数字word@HattrickNZ:固定。老鼠如果要更改文本以匹配IFS,请更改IFS以匹配您的文本。标题名称中有空格,这将为每个标题打印一个数字word@HattrickNZ:已修复。与其更改文本以匹配IFS,不如更改IFS以匹配您的文本。