파일에 사용자 정의 줄 번호를 추가하는 방법

파일에 사용자 정의 줄 번호를 추가하는 방법

file2에 추가하고 싶습니다 file1. 그 전에 에 사용자 지정 줄 번호를 추가해야 합니다 file2.

file1

1 abc
2 bcd
3 efg

file2

mkh
dfd
aad
  1. file2다음 에 줄 번호를 추가합니다 file1.

    4 mkh
    5 dfd    
    6 aad
    
  2. 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.nlawk

  • 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 그

관련 정보