我有一个类似于这种格式的文档(还有更多行):
abc
def
hij
klm
nop
我需要输出文件看起来像这样:
>1
abc
>2
def
>3
hij
>4
klm
>5
nop
基本上,在每个现有行的开头之前插入带有数字计数的标头。我一直在尝试使用sed命令,但到目前为止没有任何成功。有人可以建议如何使用Bash实现这一目标吗?
答案 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