使用sed对特定行进行图案打印

时间:2019-03-01 12:21:22

标签: regex design-patterns sed printing line

$ cat sed-examples
this_is_a_file_to_stat_edid
ab
343
13524365476586o
FINEME
OKME
dasfgh
this_is_a_file_to_stat_edid
ab
343
13524365476586o
FINEME
OKME
dasfgh

我希望看到的输出为

this_is_a_file_to_stat_edid
FINEME
OKME

尝试使用sed:

sed -n -e '/edid/ {h;n;n;n;H;x;p}h'

它返回:

this_is_a_file_to_stat_edid
FINEME
but not OKME

2 个答案:

答案 0 :(得分:0)

无需使用保留空间:

sed -n '/edid/ { p; n; n; n; n; p; n; p; q; }' sed-examples

输出:

this_is_a_file_to_stat_edid
FINEME
OKME

答案 1 :(得分:0)

  1. 使用 POSIX sed(从Thor's answer复制,减去q 命令):

    sed -n -e '/edid/{p;n;n;n;n;p;n;p;}' sed-examples
    
  2. 使用 GNU sed

    sed -n '1~7p;5~7p;6~7p' sed-examples
    

其中之一的输出

this_is_a_file_to_stat_edid
FINEME
OKME
this_is_a_file_to_stat_edid
FINEME
OKME