📜  Shell 脚本显示给定行号之间的所有行(1)

📅  最后修改于: 2023-12-03 15:05:12.309000             🧑  作者: Mango

Shell 脚本显示给定行号之间的所有行

在命令行中,我们经常需要查看文本文件中特定行号之间的内容。在 Shell 脚本中,可以编写一个简单的脚本,以便快速地在命令行中查看指定的文本文件行。

实现方法

所需的工具:

  • sed 命令:用于操作文本流中的行,并将结果输出到 stdout
  • awk 命令:将文本文件分成字段,并在这些字段之间进行操作

使用 sed 命令实现查找特定行

具体方法是使用 sed 命令,使用 p 选项来打印特定的行:

sed -n '2,5p' file.txt

上面的命令将打印文件 “file.txt” 中的第 2 到第 5 行之间的所有内容。

使用 awk 命令实现查找特定行

使用 awk 命令,将文本文件使用 “\n” 分为字段,并在这些字段中操作。

使用以下命令查找文本文件中的特定行:

awk 'NR>=2 && NR<=5' file.txt

上面的命令将查找名为 “file.txt” 的文本文件中的第 2 到第 5 行之间的所有内容。

示例

下面是使用该脚本实现的一个简单示例:

#!/bin/bash

file=$1
line1=$2
line2=$3

awk -v a="$line1" -v b="$line2" 'NR>=a && NR<=b{print}' $file

示例脚本接受三个参数,分别是:

  • 文件名
  • 起始行号
  • 结束行号

运行上面的脚本,使用以下命令:

$ bash script.sh file.txt 2 5

脚本将打印指定的文本文件中的第 2 到第 5 行之间的所有内容。

总结

在命令行中,Shell 脚本可以很方便地显示指定行号之间的所有行。使用 sedawk 命令,可以快速地实现这种功能,并且可以轻松扩展到其他用例。