使用 awk 命令将 Linux 文件按空行分割并筛选匹配字符串
可以使用 awk 命令来实现。
假设我们要将文件 'file.txt' 按照空行分割,并且当第一行包含字符串 'match' 时,将其输出到单独的文件 'match.txt' 中,可以使用以下命令:
awk 'BEGIN {RS="\n\n"} NR==1 && /match/ {print > "match.txt"; next} {print > "file_"NR".txt"}' file.txt
解释一下这个命令:
RS="\n\n":将输入文件的行分隔符设置为两个连续的换行符,即空行。NR==1 && /match/ {print > "match.txt"; next}:如果当前行是第一行且包含字符串 'match',则将该行输出到 'match.txt' 文件中,并跳过后面的命令。{print > "file_"NR".txt"}:对于每个空行分隔的块,将其输出到一个以序号命名的文件中,文件名为 'file_1.txt'、'file_2.txt' 等。
这样,文件 'file.txt' 就会被分割成若干个文件,其中第一个块如果包含字符串 'match',则会单独输出到 'match.txt' 文件中。
原文地址: https://www.cveoy.top/t/topic/njQQ 著作权归作者所有。请勿转载和采集!