在终端中打印文件的特定行

9

这可能听起来有些愚蠢,但我没有找到一个可以做到这一点的工具,所以在尝试自己编写代码之前,我想确认一下是否存在这样的工具:

是否有一种简单的方法可以catless文件中特定行?

我希望实现以下操作:

# -s == start && -f == finish
# we want to print lines 5 - 10 of file.txt
cat -s 5 -f 10 file.txt

即使有一些更简单的工具,但我不知道是否有这样的工具存在:

# print from line 10 to the end of the file
cat -s 10 file.txt

我认为这两个功能都可以很容易地通过混合使用 headtailwc -l 来实现,但也许有我不知道的内置命令可以完成这些功能呢?

1个回答

15

是的,awk和sed可以帮助你。

针对5到10行:

awk 'NR>4&&NR<11' file.txt
sed -n '5,10p' file.txt

对于第 10 行到最后一行

awk 'NR>9' file.txt
sed -n '10,$p' file.txt

也许值得进一步研究的是其中的Awk。 sed 可以很复杂,但你无论如何都需要手册来解密任何非平凡的脚本。 Awk 是 shell 脚本的自然扩展,并且对于许多在 shell 脚本中不太自然完成的小任务是必需的(尽管像 Bash 这样的现代 shell 填补了许多这些空缺;但远非所有)。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接