我想附加file2
到file1
.在此之前,我需要将自定义行号添加到file2
.
file1
1 abc
2 bcd
3 efg
file2
mkh
dfd
aad
将行号添加到
file2
以下file1
.4 mkh 5 dfd 6 aad
附加
file2
到file1
cat file2 >> file1
如何将行号添加到file2
上面显示的内容中?
答案1
nl -v "$((1+$(wc -l < file1)))" file2 >> file1
nl
是一个工具n数字我文件的行。该-v
开关提供行号的起始值。我使用子 shellwc
来获取 的行数file1
,并向其添加 1 以获取 的起始行号file2
,并将结果连接到 的末尾file1
。
请注意,这wc -l file1
会打印行数,后跟文件名,但由于我们已将wc
的 stdin 重定向到 from file1
,因此该wc
工具本身不知道有关文件名的任何信息file1
,仅打印行数(带有一些不包含空格的空格)在这种情况下并不重要)。
这可以做到轻微地更干净地使用awk
and nl
:
nl -v $(awk 'END { print NR + 1 }' file1) file2 >> file1
答案2
和awk
:
awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
$(wc -l <f1.txt)
获取文件中的行数f1.txt
,我们将其作为nl
变量传递到awk
print NR+nl " " $0
打印 的每条记录,f2.txt
并将相应的行号添加到变量nl
,然后是一个空格,然后是整个记录
例子:
% cat f1.txt
1 abc
2 bcd
3 efg
% cat f2.txt
mkh
dfd
aad
% awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
4 mkh
5 dfd
6 aad
答案3
另一个awk
解决方案:
$ awk 'NF==1{print ++c" "$1 >> "file1"} NF>1{c=$1}' file1 file2
$ cat file1
1 abc
2 bcd
3 efg
4 mkh
5 dfd
6 aad
通用案例:
$ cat file1
1 abc x
2 bcd y
3 efg z
$ cat file2
mkh 1a
dfd foo
aad bar
$ awk 'NR==FNR{c=$1; next} {print ++c" "$0 >> "file1"}' file1 file2
$ cat file1
1 abc x
2 bcd y
3 efg z
4 mkh 1a
5 dfd foo
6 aad bar
答案4
一个非常简单的答案:
$ cat 测试文本 1. 敏捷的棕色狐狸跳过了那只懒狗。 $ 猫测试文本 | tr ' ' '\n' |排序>测试文本2 $ cat -n testText testText2 1 1. 敏捷的棕色狐狸跳过了那只懒狗。 2 1. 3 棕色 4 狗。 5 狐狸 6 跳 7 懒惰 8 点以上 9快 10 的 11 那个