
我想附加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 那個