Unix cat 仅输出行范围

问题描述 投票:0回答:4

如何获取

cat
命令的输出以仅显示文件第 85 到 158 行的输出。
我知道我可以将数字添加到每个石灰中,然后也许可以通过管道传输它,但我不想稍后删除数字。

或者我应该使用其他文本解析器? 谢谢。

shell unix cat
4个回答
7
投票

您可以使用 sed:

sed -n '85,158p' file

head -n 158 file | tail -n 73 # 158-85=73

1
投票

您也可以使用这个:

cat file | sed -n '85,158p' file

1
投票

sed '85,158!d' 文件

此命令可以正常工作,符合您的期望。


0
投票

另一种选择是使用 awk。这是一个示例脚本,print_line_range.sh:

#!/usr/bin/env bash
# change the above line to where env located in your system, e.g. #!/bin/env bash

start_line_number=$1
end_line_number=$2
filepath=$3

cmd="awk 'NR >= ${start_line_number} && NR <= ${end_line_number} {print NR, \$0}' ${filepath}"
#use {print \$0}' if don't want print line number
eval "$cmd"

使用示例,

print_line_range.sh <start_line_number> <end_line_number> <filepath>
© www.soinside.com 2019 - 2024. All rights reserved.