2013-02-11 60 views
1

我应该使用哪条命令来打印部分文本文件,以了解此部分的起始和结束位置?通用命令,用于搜索文本文件的一部分并将其打印(使用awk或sed)

例如:

columnA columnB columnC 
baba  bobo bibi 
caca  coco cici 
.   .  . 
.   .  . 
zaza zeze  zizi 
EndA EndB EndC 

在我所有的文件我有完全的columnA(columnB ...)和恩达(EndB ...),相同的文字就是我想要做的是打印的内容在它们之间,即每个文件都不同的巴巴(bobo ...)。

我在做这个,grep |切| |尾巴,但是每次我有一个新文件时,我必须编写(和查找)新模式,因为每个文件的行数是不同的。我想有一种更聪明(和通用)的方式来使用awk或sed来实现这一点。

+0

IIUC,[此](http://stackoverflow.com/questions/1187354/excluding-first-and-last-lines-from-sed-start-end)可能是一个回答你的问题。 – Thor 2013-02-11 17:34:57

回答

0

战略经济对话范围:

sed -ne '/^columnA/,/^EndA/p' 
1

如果你正在寻找打印所有,但你可以做

sed '1d; $d' file.txt 
1

第一个和最后一个行和旁边的SED解决方案,可以将awk作为WEL:

BEGIN { 
    output=0; 
} 

$1 ~ /columnA/ || $1 ~ /endA/ { 
    output=!output; 
    next; 
} 

{ if(start_output) print $0 } 
0

可以使用头部和尾部

head -n-1 temp.txt | tail -n +2 

输出

baba  bobo bibi 
caca  coco cici 
.   .  . 
.   .  . 
zaza zeze  zizi 
相关问题