
MYN
我被要求編寫一個命令,將一個文件 ( ) 中的第 n 行 ( ) 附加x
到另一個文件 ( 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