从文件中提取由其编号给出的行的最简单方法是什么。例如,我想要 . 的第 666 行somefile。您将如何在终端或 shell 脚本中执行此操作?
我可以看到像head -n 666 somefile | tail -n 1,甚至是一半不正确的解决方案cat -n somefile | grep -F 666,但必须有更好、更快、更强大的解决方案。也许使用更晦涩的 unix 命令/实用程序?
dr_*_*dr_ 23
sed(s流编辑器)是这种工作的正确工具:
sed -n '666p' somefile
编辑:@tachomi 的解决方案sed '666q;d' somefile在处理大型文本文件时更好,因为它在打印模式后退出sed而不读取文件的其余部分。在所有其他文件上,差异无关紧要。
tac*_*omi 18
您可以使用 sed
sed -n '666p' somefile
Run Code Online (Sandbox Code Playgroud)
或者
sed '666!d' somefile
Run Code Online (Sandbox Code Playgroud)
或者在大文件中
sed '666q;d' somefile
Run Code Online (Sandbox Code Playgroud)
在 bash 脚本中
#!/usr/bin/bash
line=666
sed "$line"'q;d' somefile
Run Code Online (Sandbox Code Playgroud)
POSIXly(也许是大文件最快的):
tail -n +666 | head -n1
Run Code Online (Sandbox Code Playgroud)
尝试
awk 'NR == 666 { print ; exit ; } '
Run Code Online (Sandbox Code Playgroud)
或者
awk -vline=$LINE 'NR == line { print ; exit ; } '
awk 'NR == '$LINE' { print ; exit ; } '
Run Code Online (Sandbox Code Playgroud)
如果您想通过 shell 变量 ($LINE) 提供行号。
e[dx]it:根据 terdon 的建议。
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |