원래의:
yes
no
approved
declined
두 번째 단락
1111 1
333 4
1
4
원본 텍스트에서 바꾸려는 줄 번호 입니다 .
산출:
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
사용하여 첫 번째 필드 값 캡처 (첫 번째 입력 파일 처리 시 )$2
a
file2
$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