linux - 将文本提取到新文件中

标签 linux bash awk sed

我有一个格式如下的文本文件

CREATE TABLE `a` (
.
.
);

CREATE TABLE `b` (
.
.
);

等等等等......

我想提取单个表并尝试使用 sed 但它似乎不起作用:

sed -n '/^CREATE\sTABLE\s`a`/,/^;$/p' file

不幸的是,这没有提供预期的行为。它正在生成整个文件,而不仅仅是代码块。

它应该只抓取一个代码块。

发现问题(愚蠢的拼写错误):

sed -n '/^CREATE\sTABLE\s`a`/,/;$/p' file

最佳答案

$ awk -v RS= '$3=="`a`"' file
CREATE TABLE `a` (
.
.
);

$ awk -v RS= '$3=="`b`"' file
CREATE TABLE `b` (
.
.
);

如果这不是您所需要的,那么编辑您的问题以提供更具真实代表性的样本输入和相关的预期输出。

关于linux - 将文本提取到新文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062461/

相关文章:

linux - 使用 gfortran/gcc : crt1. o 编译时出错:在函数 `_start' 中

linux - 启动 Upstart 任务 - 未知作业错误

bash - Sed 在 bash 脚本中不工作

linux - 用于计算文本文件中的 CR/LF 的 Bash 脚本

linux - 替换列的 CSV 文件值

python - 使用 awk 或 perl 按键对文件进行排序,就像没有预排序的连接一样

c - 是否可以读取另一个线程的程序计数器?

regex - 将包含特定文本的行从一个文件复制到另一个文件

bash - 使用 bash 和 watch 监控 qemu-kvm

bash - 在 awk 中获取多个压缩文件的 FILENAME