连接以时间戳

时间:2015-07-09 22:02:41

标签: linux bash join sed timestamp

在单个目录中,我有一系列数据文件,文件名后附有时间戳,例如file-13-57-38-876.txtfile-13-57-59-288.txtfile-13-58-19-700.txt等,其中时间列为时 - 分 - 秒 - 毫秒。每个文件的格式基本如下:

Some preamble text
that takes up a few lines
0.000 1.000
0.200 0.900
0.400 0.800
0.600 0.700
0.800 0.600
1.000 0.500

每个文件都包含相同x坐标的点,因此我希望将所有文件中的数据(可能使用join)连接到包含许多列的单个文件alldata.txt中,每个文件中的一个按顺序排列。使用sed -i '/^[0-9]/ !d' *.txt剥离所有非数字数据应该是直截了当的,但是由于时间戳的不规则性,我不确定最简单的方法来浏览这些文件,将它们连接在一起。名。有没有办法将这些文件根据其外观逐个传递到join&按字母顺序排列'在目录中?

1 个答案:

答案 0 :(得分:1)

如果输入文件与您说的一样规则 - 相同顺序的相同x-coords - 您可以尝试一些bash进程替换和脚本重新调用:

#!/bin/bash

process() { exec sed -n '/^[0-9]/p' "$1"; }

[ $# -eq 0 ] && exit
[ $# -eq 1 ] && { process "$1"; exit; }

fn="$1"; shift
join <(process "$fn") <("$0" "$@")

如果以上内容保存为&#34; join_em.sh&#34;,请参阅:

./join_em.sh file-*.txt

适合你。

如果您处理数百或数千个输入文件,也许要小心。