在单个目录中,我有一系列数据文件,文件名后附有时间戳,例如file-13-57-38-876.txt
,file-13-57-59-288.txt
,file-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
&按字母顺序排列'在目录中?
答案 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
适合你。
如果您处理数百或数千个输入文件,也许要小心。