줄 번호로 원본 파일의 줄을 다른 파일로 교체

줄 번호로 원본 파일의 줄을 다른 파일로 교체

원래의:

yes
no
approved
declined

두 번째 단락

1111 1
333 4

14원본 텍스트에서 바꾸려는 줄 번호 입니다 .

산출:

1111
no
approved
333

이 문제를 처리하는 방법

답변1

짧은방법:

awk 'NR==FNR{ a[$2]=$1; next }FNR in a{ $0=a[FNR] }1' file2 file1
  • a[$2]=$1- 두 번째 필드 값을 배열 인덱스로 $1사용하여 첫 번째 필드 값 캡처 (첫 번째 입력 파일 처리 시 )$2afile2
  • $0=a[FNR]- 전체 행을 현재 레코드 번호의 값으로 대체합니다 FNR(처리 중 file1).

산출:

1111
no
approved
333

답변2

절차적 생성을 선호한다면 awk를 사용하여 sed 스크립트를 생성할 수 있습니다.

awk '{printf "%dc\\\n%s\n", $2, $1}' < second  | sed -f - original

sed가 스크립트의 stdin을 허용하는 경우 다음 중 하나를 수행하세요.

awk '{printf "%dc\\\n%s\n", $2, $1}' < second > tempfile &&
sed -f tempfile original &&
rm tempfile

sed가 스크립트의 표준 입력을 허용하지 않는 경우.

중간 sed 스크립트는 예제 입력과 같습니다.

1c\
1111
4c\
333

관련 정보