假設:
我假設你所有的數據文件都是這種格式:
<something1><newline>
<something2><newline>
<something3><newline>
因此,舉例來說,如果最後一個換行符丟失,下面的腳本將錯過字段對應於<something3>
。
用法:./merge.bash -o <output file> <input file list or glob>
腳本追加到上一次運行的任何現有的輸出文件。它也不會假定每個輸入文件有多少個數據字段。它盲目地將每一行放入由空格分隔的輸出文件中的一行中。
#!/bin/bash
# set -o xtrace # uncomment to debug
declare output
[[ $1 =~ -o$ ]] && output="$2" && shift 2 || { \
echo "The first argument should always be -o <output>";
exit -1; }
declare -a files=("${@}") row
for file in "${files[@]}";
do
while read data; do
row+=("$data")
done < "$file"
echo "${row[@]}" >> "$output"
row=()
done
例子:
$ cat data1
-1597.5421
-1909.6982
-1991.8743
-2033.5744
$ cat data2
-1789.3324
-1234.5678
-9876.5433
-9999.4321
$ ./merge.bash -o test data{1,2}
$ cat test
-1597.5421 -1909.6982 -1991.8743 -2033.5744
-1789.3324 -1234.5678 -9876.5433 -9999.4321
謝謝,非常完美! – 2012-07-31 16:03:36