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
스위치는 줄 번호의 시작 값을 제공합니다. 나는 서브쉘을 사용하여 wc
의 줄 번호를 얻고 file1
여기에 1을 추가하여 의 시작 줄 번호를 얻고 file2
결과를 의 끝에 연결합니다 file1
.
이는 wc -l file1
줄 번호 뒤에 파일 이름이 인쇄되지만 wc
표준 입력을 from 으로 리디렉션 했기 때문에 file1
도구 wc
자체는 파일 이름에 대해 아무것도 모르고 file1
줄 번호(일부 공백 포함)만 인쇄합니다. 이 경우).
이건 할 수 있어약간awk
및 의 보다 깔끔한 사용 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. 민첩한 갈색 여우가 게으른 개를 뛰어넘었습니다. $ cat 테스트 텍스트 | tr ' ' '\n' 정렬>테스트 텍스트 2 $ 고양이 -n testText testText2 1 1. 민첩한 갈색 여우가 게으른 개를 뛰어넘었습니다. 이십 일. 3 브라운 4마리. 여우 5마리 6번 점프 7 게으름 8시 이상 9 빨리 10개 11 그