用于搜索文本文件的一部分并打印它的通用命令(使用 awk 或 sed)
Posted
技术标签:
【中文标题】用于搜索文本文件的一部分并打印它的通用命令(使用 awk 或 sed)【英文标题】:Generic command to search for a part of a text file and print it (using awk or sed) 【发布时间】:2013-02-11 17:03:43 【问题描述】:我应该使用哪个命令来打印部分文本文件,知道这部分的开始和结束位置?
例如:
columnA columnB columnC
baba bobo bibi
caca coco cici
. . .
. . .
zaza zeze zizi
EndA EndB EndC
在我的所有文件中,columnA(columnB ...) 和 EndA(EndB ...) 的文本完全相同,我想做的是打印它们之间的内容,即 baba(bobo . ..) 每个文件都不同。
我这样做是使用 grep |切 |尾,但是每次我有一个新文件时我都必须编写(并找到)新模式,因为每个模式的行数都不同。我想使用 awk 或 sed 有一种更智能(和通用)的方法来做到这一点。
【问题讨论】:
IIUC, this 可能是您问题的答案。 【参考方案1】:如果您要打印除第一行和最后一行之外的所有内容,您可以这样做
sed '1d; $d' file.txt
【讨论】:
【参考方案2】:在 sed 解决方案旁边,awk 也可以使用:
BEGIN
output=0;
$1 ~ /columnA/ || $1 ~ /endA/
output=!output;
next;
if(start_output) print $0
【讨论】:
【参考方案3】:sed 有范围:
sed -ne '/^columnA/,/^EndA/p'
【讨论】:
【参考方案4】:你可以使用头部和尾部
head -n-1 temp.txt | tail -n +2
输出
baba bobo bibi
caca coco cici
. . .
. . .
zaza zeze zizi
【讨论】:
以上是关于用于搜索文本文件的一部分并打印它的通用命令(使用 awk 或 sed)的主要内容,如果未能解决你的问题,请参考以下文章
Linux下的五个查找命令:grepfindlocatewhereiswhich