파일 y의 끝에 파일 x의 n번째 줄을 추가합니다.

파일 y의 끝에 파일 x의 n번째 줄을 추가합니다.

MYN파일( x)의 n번째 줄( )을 다른 파일( y) 에 추가하는 명령을 작성하라는 요청을 받았습니다 . 지금까지 내가 한 일은 다음과 같습니다.

MYN=4
hey=$(awk 'NR==$MYN' x)
echo "$hey" >> y 

그런데 왜 이것이 작동하지 않습니까?

답변1

목표가 awk스크립트 내에서 사용하기 위해 변수를 전달하는 것이라면 다음 옵션 awk과 함께 사용할 수 있습니다 -v.

hey=$(awk -v MYN=$MYN 'NR==MYN' x)

답변2

문제가 보입니다. 작은 따옴표를 사용하고 있습니다. Bash 변수가 $MYN확장되는 것을 허용하지 않습니다 . 새 변수를 지정하여 상황을 복잡하게 만들 수도 awk있고 너무 간단하기 때문에 큰따옴표로 전환할 수도 있습니다.

awk "NR==$MYN" x

나는 그랬을 것이다사용된sed하지만 나는 당신의 논리에 어떤 명백한 문제도 볼 수 없습니다

MYN=4
sed "${MYN}q;d" x >> y

예상대로 작동하는 것 같습니다.

$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4

관련 정보