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