想知道是否有人可以帮助我解决这个问题。所以我有一个 10 行的文本文件,一个 while 循环和一个从 10 开始的计数器。对于循环的每次迭代,我将递减它。但是,对于每次迭代,我想提取一行,例如第一次旋转的第 10 行和第二次旋转的第 9 行以比较它们。是否有一个函数说你传递一个值并提取某行?或它的某种组合。将不胜感激的帮助谢谢
将您的行号传递给awk
:
如果行号在变量i
中,则:
val=$(awk -v line=$i 'NR==line{print;exit}' filename)
将第 i
行存储到变量 val
中。
在外壳中尝试以下操作:
read -p "Give me the number of the wanted line >>> "
sed -n "${REPLY}{p;q}" FILE
用尾巴和头来做到这一点:
line=$(tail -n "+$N" file | head -n 1)
tail -n "+$N" file
将从行号$N
开始打印文件,head -n 1
将打印从尾部接收的第一行。然后,最终结果将存储在变量$line
中(不带结尾换行符)。
如果你想要更短的东西,有一个sed oneliner:
line=$(sed -n -e "$N { p; q }" file)
它将仅在行号 $N
上调用打印"p"命令,然后使用退出"q"命令退出。
编辑:根据格伦杰克曼的建议添加了q
命令,以评论另一个答案