
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엄버엘파일의 ines입니다. 스위치 -v
는 줄 번호의 시작 값을 제공합니다. 나는 서브쉘을 사용하여 의 wc
줄 수를 얻고 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
매우 간단한 대답은 다음과 같습니다.
$ 고양이 테스트텍스트 1. 날렵한 갈색 여우가 게으른 개를 뛰어넘었습니다. $ 고양이 테스트텍스트 | tr ' ' '\n' | 정렬 >testText2 $ 고양이 -n testText testText2 1 1. 날렵한 갈색 여우가 게으른 개를 뛰어넘었습니다. 2 1. 3 브라운 4개. 여우 5마리 6 뛰어 올랐다 7 게으른 8 오버 9 빨리 10 11