
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