7.16 -i-o 选项

经常遇到的情况是,已有的数据有很多列,而某个命令只需要其中的某几列;或者某个命令的输出有很多列,却只想要输出其中的某几列。

常见的做法是使用 gawk 以及管道对输入输出数据做处理。其实,GMT提供的 -i-o 选项可以满足日常的大多数需求了。

-i 选项的语法是:

-i<col>[+l][+s<scale>][+o<offset>][,...]

默认情况下,GMT会读取输入数据中的全部列。 -i 选项后接以逗号分隔的列号或列号范围,以指定输入数据中要使用哪些数据列以及这些数据列的顺序,例如 -i3,6,2 表示读入数据中的第4、7、3列。也可以多次使用某一列数据,比如 -o3,1,3 则会两次输出第四列数据。

列号范围的格式为 <start>[:<inc>]:[<stop>] ,若省略 <inc> 则默认其值为1,比如 1:3

每个列号后还可以加上额外的字符以对每个数据做简单的处理。比如 +l 表示对当前列取 \(\log_{10}\)+s<scale> 表示将当前列乘以比例因子 <scale>+o<offset> 表示将当前列的值加上 <offset> 。比如 -i2+s2+o10,6,3 表示读入数据的第3、7、4列,并对第3列数据乘以2再加上10。

-o 选项的语法为:

-o<col>[,...]

-o 只能控制输出哪些列,不能对输出的数据做进一步处理。