![将文件 x 中的第 n 行附加到文件 y 的末尾](https://linux22.com/image/1127537/%E5%B0%86%E6%96%87%E4%BB%B6%20x%20%E4%B8%AD%E7%9A%84%E7%AC%AC%20n%20%E8%A1%8C%E9%99%84%E5%8A%A0%E5%88%B0%E6%96%87%E4%BB%B6%20y%20%E7%9A%84%E6%9C%AB%E5%B0%BE.png)
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