将文件 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

相关内容