在 Unix 中提取文本文件的某些指定行的函数



想知道是否有人可以帮助我解决这个问题。所以我有一个 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命令,以评论另一个答案

相关内容

  • 没有找到相关文章

最新更新