使用bash将新的编号行插入到现有文本文档中

时间:2019-03-05 17:26:48

标签: bash

我有一个类似于这种格式的文档(还有更多行):

abc
def
hij
klm
nop

我需要输出文件看起来像这样:

>1
abc
>2
def
>3
hij
>4
klm
>5
nop

基本上,在每个现有行的开头之前插入带有数字计数的标头。我一直在尝试使用sed命令,但到目前为止没有任何成功。有人可以建议如何使用Bash实现这一目标吗?

3 个答案:

答案 0 :(得分:2)

使用awk

的解决方案
$ awk '{print ">"NR "\n"$0}' 1.txt
>1
abc
>2
def
>3
hij
>4
klm
>5
nop

答案 1 :(得分:0)

简单易读的解决方案: 迭代,递增,输出。

将输出存储在名为output.txt的文件中:

header=1                           #Header is num to insert
for item in `cat lines.txt`;       #loop through your other file
do
        echo $header >> output.txt #Insert header
        echo $item >> output.txt   #Insert line from file
        header=$((header+1))       #Increment the header
done

为您提供如下输出:

$cat output.txt
1
egg
2
steak
3
cheese
4
chicken
5
asparagus

仍然简单易读的解决方案:

header=1
for item in `cat lines.txt`;
do
        echo -e "$header\n$item" >> output.txt #Use echo -e to interpret newline character.
        header=$((header+1))
done

给出相同的输出:

  $cat output.txt
    1
    egg
    2
    steak
    3
    cheese
    4
    chicken
    5
    asparagus

答案 2 :(得分:0)

使用nl文件行数

$ nl -s $'\n' -w 1 file
1
abc
2
def
3
hij
4
klm
5
nop

man nl

-s, --number-separator=STRING
       add STRING after (possible) line number

-w, --number-width=NUMBER
       use NUMBER columns for line numbers