regex - 将 sed 中的每个匹配项输出为单独的文件

标签 regex bash sed

我有一个包含多项选择题的文件。

每个问题的第一行以 010 开头。 每个问题的最后一行以小写字母 e 开头。

我需要将每个匹配项输出到一个单独的文件中。

sed -n '/010/,/e)/p' FileName

上面的sed 命令显示了我需要的信息。我怎样才能将每个匹配项输出到它自己的文件中?第一个文件应命名为 1 并在下一次匹配时递增 1。

最佳答案

sed 不能这样做,但是 awk 可以。

awk -v RS="010" 'NR > 1 {print RS $0 > (NR-1)}' filename

RS定义了记录分隔符(一般为换行符),NR为当前记录号。我添加了 NR>1 条件,因为文件以记录分隔符开头,第一条记录将是它之前的空字符串。

关于regex - 将 sed 中的每个匹配项输出为单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544209/

相关文章:

java - 使用 Java 正则表达式提取包含 URL 的特定行

bash - 将脚本调用中的变量插入脚本 bash 内的字符串中

sed - 用 sed 替换一行中的最后一个字符

bash - 在 sed 中按模式排除行

php - 从 SQL 查询中提取所有表

java - 如何从字符串中转义\s(空格字符)?

python - 在 python 中是否有等效于 emacs 的 rx 宏?

python - 在不创建多个脚本的情况下同时运行多个 python 脚本

bash - 在 Linux shell 脚本中,我如何打印数组的最大值和最小值?

regex - 使用正则表达式有选择地搜索和替换某些行