Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 获取文件中超过特定行数的所有文本块_Shell_Awk_Perl - Fatal编程技术网

Shell 获取文件中超过特定行数的所有文本块

Shell 获取文件中超过特定行数的所有文本块,shell,awk,perl,Shell,Awk,Perl,文本块由空行分隔,如: AAA BBB AAA' BBB' AAA BBB CCC 我想得到最后一个超过两行的文本块。 我知道我可以写Python脚本 如何使用一些命令行fu来执行此操作?编辑:我想我误解了“获取最后一个文本块”。要简单地打印超过2行的所有段落,请执行以下操作: awk -v RS= -v ORS='\n\n' -F '\n' 'NF>2' file : RS设置为空值可启用“段落模式”FS已设置为\n(这样NF将等于每个段落中的行数)。awk程序保存符合条件的最

文本块由空行分隔,如:

AAA
BBB

AAA'
BBB'

AAA
BBB
CCC
我想得到最后一个超过两行的文本块。 我知道我可以写Python脚本


如何使用一些命令行fu来执行此操作?

编辑:我想我误解了“获取最后一个文本块”。要简单地打印超过2行的所有段落,请执行以下操作:

awk -v RS= -v ORS='\n\n' -F '\n' 'NF>2' file

:

RS
设置为空值可启用“段落模式”
FS
已设置为
\n
(这样
NF
将等于每个段落中的行数)。awk程序保存符合条件的最新记录
NF>2
&并在末尾打印


使用类似的想法(除了perl以不同的方式计算字段数):


根据文件的内容,向后读取文件可能会更快,例如使用
tac

tac file | perl -F'\n' -l -00e 'if ($#F >= 2) {print $_; exit}' | tac

编辑:我想我误解了“获取最后一个文本块”。要简单地打印超过2行的所有段落,请执行以下操作:

awk -v RS= -v ORS='\n\n' -F '\n' 'NF>2' file

:

RS
设置为空值可启用“段落模式”
FS
已设置为
\n
(这样
NF
将等于每个段落中的行数)。awk程序保存符合条件的最新记录
NF>2
&并在末尾打印


使用类似的想法(除了perl以不同的方式计算字段数):


根据文件的内容,向后读取文件可能会更快,例如使用
tac

tac file | perl -F'\n' -l -00e 'if ($#F >= 2) {print $_; exit}' | tac

我不知道从哪里开始。我在几年前创建了我的SO帐户。查看我的个人资料,你会发现这是我第一次问这样的问题。我确实帮助了其他人。也许是时候寻求帮助了?我不知道从哪里开始。我在几年前创建了我的SO帐户。查看我的个人资料,你会发现这是我第一次问这样的问题。我确实帮助了其他人。也许我该找人帮忙了?
tac file | perl -F'\n' -l -00e 'if ($#F >= 2) {print $_; exit}' | tac