saclst

saclst 是很常用的一个 SAC 工具,用于列出头段变量的值,其语法很简单:

$ saclst header_lists f file_lists

其中 header_lists 为要查看的头段变量名列表;f 为关键字,表明接下来的所有参数都是 SAC 文件;file_lists 为 SAC 文件列表。需要注意的是,头段变量名是不区分大小写的,除了头段变量 F 以外。大写的 F 被当作头段变量名,小写的 f 被作为关键字。1

查看单个文件的单个头段:

$ saclst npts f seis.SAC
seis.SAC            1000

查看多个文件的多个头段:

$ saclst stla stlo evla evlo gcar f N.*.U
N.AAKH.U      36.3726      137.92      -5.514     151.161     43.4752
N.ABNH.U      34.6326     137.231      -5.514     151.161     42.0392
N.AC2H.U      35.4786     137.735      -5.514     151.161     42.6857
N.AGMH.U       35.787     137.717      -5.514     151.161     42.9798
N.AGWH.U      43.0842      140.82      -5.514     151.161     49.2714
N.AHIH.U      38.2799     139.549      -5.514     151.161     44.8874

在 Bash 脚本中将头段变量的值赋值给变量:

#!/bin/bash
stla=`saclst stla f seis | awk '{print $2}'`
stlo=`saclst stlo f seis | awk '{print $2}'`
echo $stla $stlo

在 Perl 脚本中将头段变量的值赋值给变量:

#!/usr/bin/env perl
use strict;
use warnings;

my ($fname, $stla, $stlo) = split /\s+/, `saclst stla stlo f seis`;
print "$stla $stlo \n";
1

这是设计不合理的地方。