【发布时间】:2014-12-20 06:39:51
【问题描述】:
我是 Shell 脚本的新手,需要您的帮助以找到一种“使用 SED 搜索模式并从第二次出现的模式中删除模式之后的下一行”的方法。我能够在搜索模式(第一次出现)之后删除该行,但我的要求需要在第二次出现后删除空行。
sed -re "s/^([^^L])/ \1/" -e "s/^^L/1/" -e "/$esc_filename/{p;s/$esc_filename/"${new_filename}"/}" -e "/^"$new_filename"/{n;d}" "$i" >> "$source_dir/${cap_new_rep_id}.TXT"
或
sed -re "s/^([^^L])/ \1/" -e "s/^^L/1/" -e "/^ $esc_filename/{p;s/$esc_filename .*/"${cap_new_rep_id}"/}" -e "/"${cap_new_rep_id}"/{N;s/\n.*//;}" "$i" >> "$source_dir/${cap_new_rep_id}.TXT"
上面的命令确实搜索 Control-L 并且如果找到用 1 替换 else 一个空格,然后再次搜索一个字符串并替换为另一个字符串,最后将搜索最新的字符串并删除之后的下一行但是我只需要在找到第二个模式后删除下一行的选项。
如果有人能够为实现这一目标提供一些启示,那就太好了。
感谢您的帮助。
【问题讨论】:
-
向我们提供了要更改的文本的输出以及您期望的输出。
标签: sed