使用 grep 和 awk 从参数大于 100 的文件中提取行

使用 grep 和 awk 从参数大于 100 的文件中提取行

我有一个文件,我必须根据规范创建一个具有以下输出文件的脚本:

输入文件具有前 28 行标头,这些标头必须包含在输出中。输入的某些行具有特定参数 ZH:any 值(例如 ZH:100 或 ZH:50)。 ZH 参数所在的列因行而异。

我的输出文件应包含标题行以及包含相应值大于 100 的 ZH 参数的行(例如 ZH:105 、 ZH:200 等)

不包含 ZH 参数的行将被省略。

答案1

使用headgrep

(
# get header
head -n 28 file
# grep lines with ZH value > 100
grep -Ew "ZH:.:[1-9][0-9]{2,}" file
) > outfile

答案2

如果没有一个最小的例子,很难猜出你想要什么......

无论如何,awk如果您想过滤具有ZH参数的行,此脚本可能会有所帮助:

awk 'strtonum(gensub(/^.*ZH:.:([0-9]+).*$/, "\\1", "1"))>100' file

这将打印所有行,包括类似 的字段ZH:<one character>:<some number>

gensub提取与 关联的数字ZH。然后将其转换为数字并与数字 100 进行比较。

相关内容