如何只显示任意文本文件的第12-24行?

时间:2014-11-19 21:36:17

标签: bash

我有一组文本文件,我想通过在每个文件上运行bash脚本来显示第12-14行。

对于其中一个文件,这有效:

tail -14 | head -11

但由于其他文件的长度不同,我无法对它们运行相同的脚本。

我正在寻找输出文本文件的第12-24行的命令是什么?

3 个答案:

答案 0 :(得分:5)

sed-n参数

一起使用
sed -n 12,24p <FILENAME>

答案 1 :(得分:1)

对于一个有趣的纯Bash(≥4)可能性:

mapfile -t -s 11 -n 13 lines < file
printf '%s\n' "${lines[@]}"

这将跳过前11行(包含-s 11)并读取13行(包含-n 13)并将每行存储在数组lines的字段中。

答案 2 :(得分:0)

使用awk

awk '12<= NR && NR <= 24' file

awk中,NR是行号。上述条件坚持NR大于或等于12且小于或等于24.如果是,则打印该行。否则,它不是。

更有效的解决方案

在达到上限线后停止读取文件会更有效。这个解决方案可以做到:

awk 'NR>24 {exit;} NR>=12' file