我有个csv文件。目前,我的脚本正在做的是:
我想要做的是,步骤1完成的那一刻,我想转到csv的下一行,并对该行执行排序命令(其中提到了要根据步骤1排序的2个文件)。这意味着当第1行在第2步时,第2行应该在第1步。我该怎么做呢?我需要某种数据流水线吗?
很抱歉给你造成了混乱。我现在正在做的事情的伪代码:
sort col1_row1 > sorted_col1_row1 &
sort col2_row1 > sorted_col2_row1 &
wait for sorts
cat sorted_col1_row1 | cut -f1-3 > cut_sorted_col1_row1 &
cat sorted_col2_row1 | cut -f1-3 > cut_sorted_col2_row1 &
wait for cat
diff cut_sorted_col1_row1 cut_sorted_col2_row1 > diff_row1当对row1文件进行排序时,我希望程序跳到row2上,以便在row1文件上运行cat和diff来执行。
发布于 2014-08-31 15:42:23
你的描述很难理解。这就是你想要的吗?
( sort file1 | cut ... > step2.out ) &
sort file2 > step3.out &
wait
diff step2.out step3.out发布于 2014-08-31 22:30:06
从表面上看,您应该使用以下内容:
for suffix in row1 row2
do
for prefix in col1 col2
do
base=${prefix}_${suffix}
(sort $base | tee sorted_$base | cut -f1-3 > cut_sorted_$base) &
done
wait
diff cut_sorted_col[12]_$suffix > diff_${suffix}
done我假设您需要sorted_col1_row1文件,这些文件是sort的输出。如果您不需要它们,请删除子命令的tee部分。
没有理由在两个cut启动之前将并行性与两个排序分离开来。无论如何,sort命令很有趣;它必须读取所有输入,然后才能生成任何输出,至少在基本的排序操作模式下是这样。当它用于合并时,它可以在读取所有输入之前生成输出。
https://stackoverflow.com/questions/25591668
复制相似问题