將檔案 x 中的第 n 行追加到檔案 y 的結尾

將檔案 x 中的第 n 行追加到檔案 y 的結尾

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

相關內容