从特定行 GREP 中搜索单词

Search word from certain line GREP

File type = "ooTextFile"
Object class = "TextGrid"

xmin = 0 
xmax = 82.7959410430839 
tiers? <exists> 
size = 1 
item []: 
    item [1]:
        class = "IntervalTier" 
        name = "ortho" 
        xmin = 0 
        xmax = 82.7959410430839 
        intervals: size = 6 
        intervals [1]:a
            xmin = 0 
            xmax = 15.393970521541949 
            text = "Aj tento rok organizuje Rádio  Sud piva. Kto chce súťažiť, nemusí sa nikde registrovať.  
        intervals [2]:
            xmin = 15.393970521541949 
            xmax = 27.58997052154195 
              .
              .  
              .

您好,我正在处理数百个这样的文本文件。
我想从这个文本文件中过滤所有值 xmin=...,但只从 16th 行过滤,因为在开始时有 xmins,如您所见,它们是无用的。

我试过:

cat text.txt | grep xmin

但它显示了 xmin 所在的所有行。

请帮助我。我无法修改文本文件,因为我需要处理数百个文本文件,所以我必须设计合适的方式来过滤它们。

像这样:

awk 'FNR>15 && /xmin/' file*
            xmin = 0
            xmin = 15.393970521541949

它显示第 16

行的所有 xmin

您还可以打印找到的文件名xmin

awk 'FNR>15 && /xmin/ {=;print FILENAME" -> "[=11=]}' file*
file22 -> xmin = 0
file22 -> xmin = 15.393970521541949

更新:需要 FNR 才能处理多个文件。

使用sedgrep从单个文件的第16行到结尾查找"xmin":

sed -n '16,$p' foobar.txt | grep "xmin"

如果有多个文件,这里有一个 bash 脚本来获取输出:

#!/bin/bash
for file in ""/*; do
output=$(sed -n '16,$p' "$file" | grep "xmin")
if [[ -n $output ]]; then
echo -e "$file has follwoing entries:\n$output"; fi; done

运行 脚本为 bash script.sh /directory/containing/the/files/to/be/searched