请帮我使用SED,AWK或GREP来提取以下文字。我的文件看起来与此类似。
Text text text text text text text
Text text text text text text text
Table A
<TABLE>
xxx xxx xxx xxx
xxx xxx xxx xxx
</TABLE>
Text text text text text text text
Text text text text text text text
Table B
<TABLE>
xxx xxx xxx xxx
xxx xxx xxx xxx
</TABLE>
我只需要表A的所有信息,但我不知道如何去做。
答案 0 :(得分:1)
这些中的任何一个都可能是您想要的,具体取决于您的预期输出和文本的其余部分:
$ awk '/Table A/{f=1} f{print; if (/<\/TABLE>/) exit}' file
Table A
<TABLE>
xxx xxx xxx xxx
xxx xxx xxx xxx
</TABLE>
$ awk 'f{print; if (/<\/TABLE>/) exit} /Table A/{f=1}' file
<TABLE>
xxx xxx xxx xxx
xxx xxx xxx xxx
</TABLE>
答案 1 :(得分:0)
只要没有&lt; / TABLE&gt;在TABLE元素中。
sed -n '/Table A/,/<\/TABLE>/p' | grep -v "Table A"
PS:grep -v可能没有必要我只是不知道我的头脑中没有包括起始模式的选项。
那将打印出来
<TABLE>
xxx xxx xxx xxx
xxx xxx xxx xxx
</TABLE>
如果您需要Text部分,则无效。 AWK可能会更好。
如果您需要具有变量名称的内容,则可以执行
myTableName="Table A"
sed -n "/${myTableName}/,/<\/TABLE>/p" | grep -v ${myTableName}
答案 2 :(得分:0)
你甚至可以grep
,但awk似乎更好。
grep -A1000 "Table A" file.txt | grep -B1000 "Table B"