从文件命令中提取第一行,这样
extracting first line from file command such that
我有一个包含将近 5*(10^6) 行整数的文件。所以,我的文件足够大了。
问题是关于提取特定行,按条件过滤它们。
例如,我想:
- 提取前 N 行而不读取整个文件。
- 提取数字小于或等于 X(或 >=、<=、<、>)的行
- 提取与
condition
相关的数字(数学谓词) 的行
有没有更简单的方法来执行这些任务? (使用 sed
或 awk
或 cat
或 head
)
提前致谢。
要提取前 $NUMBER
行,
head -n $NUMBER filename
假设每一行只包含一个数字(尽管如果第一个标记是一个也可以),2 可以这样解决:
awk ' >= 1234 && < 5678' filename
本着精神,3 只是扩展名
awk 'condition' filename
不过,如果您指定了 condition
应该是什么,那将会有所帮助。这样,您就必须阅读 awk 文档以了解如何对其进行编码。同样,该数字将由 </code>.</p> 表示
<p>我认为我无法解释有关 <code>head
调用的任何内容,它实际上就是它所说的。至于 awk
行:awk
和 sed
一样按行工作。 awk
循环获取行并将您的代码应用于每一行。此代码采用
形式
condition1 { action1 }
condition2 { action2 }
# and so forth
对于 awk 提取的每一行,条件按它们出现的顺序进行检查,如果条件为真,则执行与每个条件相关的操作。例如,可以像这样使用 awk 提取文件的前 $NUMBER
行:
awk -v number="$NUMBER" '1 { print } NR == number { exit }' filename
其中 1
与 true 同义(就像在 C 中一样),NR
是行号。 -v
命令行选项将 awk 变量 number
初始化为 $NUMBER
。如果未指定操作,则默认操作为 { print }
,它会打印整行。所以
awk 'condition' filename
对于
来说是shorthand
awk 'condition { print }' filename
...打印条件成立的每一行。
我有一个包含将近 5*(10^6) 行整数的文件。所以,我的文件足够大了。
问题是关于提取特定行,按条件过滤它们。 例如,我想:
- 提取前 N 行而不读取整个文件。
- 提取数字小于或等于 X(或 >=、<=、<、>)的行
- 提取与
condition
相关的数字(数学谓词) 的行
有没有更简单的方法来执行这些任务? (使用 sed
或 awk
或 cat
或 head
)
提前致谢。
要提取前 $NUMBER
行,
head -n $NUMBER filename
假设每一行只包含一个数字(尽管如果第一个标记是一个也可以),2 可以这样解决:
awk ' >= 1234 && < 5678' filename
本着精神,3 只是扩展名
awk 'condition' filename
不过,如果您指定了 condition
应该是什么,那将会有所帮助。这样,您就必须阅读 awk 文档以了解如何对其进行编码。同样,该数字将由 </code>.</p> 表示
<p>我认为我无法解释有关 <code>head
调用的任何内容,它实际上就是它所说的。至于 awk
行:awk
和 sed
一样按行工作。 awk
循环获取行并将您的代码应用于每一行。此代码采用
condition1 { action1 }
condition2 { action2 }
# and so forth
对于 awk 提取的每一行,条件按它们出现的顺序进行检查,如果条件为真,则执行与每个条件相关的操作。例如,可以像这样使用 awk 提取文件的前 $NUMBER
行:
awk -v number="$NUMBER" '1 { print } NR == number { exit }' filename
其中 1
与 true 同义(就像在 C 中一样),NR
是行号。 -v
命令行选项将 awk 变量 number
初始化为 $NUMBER
。如果未指定操作,则默认操作为 { print }
,它会打印整行。所以
awk 'condition' filename
对于
来说是shorthandawk 'condition { print }' filename
...打印条件成立的每一行。