1

我应该使用哪个命令来打印部分文本文件,知道这部分的开始和结束位置?

例如:

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

在我的所有文件中,columnA(columnB ...) 和 EndA(EndB ...) 的文本完全相同,我想做的是打印它们之间的内容,即 baba(bobo ...)每个文件都不同。

我正在使用 grep | 切 | 尾,但是每次我有一个新文件时我都必须编写(并找到)新模式,因为每个模式的行数都不同。我想有一种更智能(和通用)的方法可以使用 awk 或 sed 来做到这一点。

4

4 回答 4

1

在 sed 解决方案旁边,awk 也可以使用:

BEGIN {
  output=0;
}

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

{ if(start_output) print $0 }
于 2013-02-11T17:20:32.673 回答
1

如果您要打印除第一行和最后一行之外的所有内容,您可以这样做

sed '1d; $d' file.txt
于 2013-02-11T17:13:23.787 回答
0

sed 有范围:

 sed -ne '/^columnA/,/^EndA/p'
于 2013-02-11T17:10:57.797 回答
0

你可以使用头部和尾部

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

输出

baba     bobo    bibi
caca     coco    cici
.         .      .
.         .      .
zaza    zeze     zizi
于 2013-02-12T01:23:59.537 回答