从文件中读取指定范围的行

15 linux files sed

我有一个包含 100000 行的文件,我如何在 linux 下从第 5555 行到第 7777 行获取行。

谢谢大家。

Kyl*_*ndt 22

sed '5555,7777!d' <filename>
Run Code Online (Sandbox Code Playgroud)

这将打印文件的第 5555-7777 行。

丹尼斯发布了以下我同意应该更快的内容:

sed '5555,7777p; 7778q' filename

以下证据表明它应该更快:

$ n=1
$ while [[ n -le 100000 ]]; do echo $n >> sedtest2; n=$((n + 1)); done
$ strace -e trace=read -o sed1 sed '5555,7777!d' sedtest2
$ strace -e trace=read -o sed2 sed '5555,7777p; 7778q' sedtest2
$ wc -l sed1
149 sed1
$ wc -l sed2
14 sed1
Run Code Online (Sandbox Code Playgroud)

仅在 Bash 中(为了好玩):

n=1
while read line; do 
    if [[ ($n -ge 5555) && ($n -le 7777)  ]]; then 
        echo $line
    elif [[ $n -gt 7777 ]]; then
        break
    fi 
    n=$(( $n + 1 ))
done < file
Run Code Online (Sandbox Code Playgroud)


Den*_*son 16

完成后退出可以加快速度:

sed -n '5555,7777p; 7778q' input_file
Run Code Online (Sandbox Code Playgroud)


Cho*_*er3 7

其中任何一个都应该有效;

  • sed -n '开始编号结束编号p'
  • awk 'NR>= startnumber &&NR<= endnumber ' 文件

顺便问一下好问题;)