Ksh:将一个文件追加到管道内的另一个文件的最佳方法

时间:2013-06-18 22:31:05

标签: shell pipe ksh

我有一个包含多列的类似excel的DAT文件,我计划使用cut从中投射3列,然后进行各种其他操作(排序行,过滤行等)。脚本看起来像这样:

cut -f1,2,3 -d"|" file1.DAT | 
    sort -r |
        sort -u -k1,1 | 
            sed "s/ //g" | ... > res

我有第二个包含更多内容的DAT文件;这个文件已经有了我需要的3列 问题是,如何将这个文件与管道中的第一个文件一起附加(或预置),以便我可以继续对组合文件进行排序? (最好不要创建临时文件)

这种形式有可能吗?

cut -f1,2,3 -d"|" file1.DAT |
    DO SOMETING HERE | 
        sort -r | 
            sort -u -k1,1 | ...

1 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,DO SOMETHING HERE应该是

cat - file2.DAT

这将con cat enate stdin(从管道接收,cut的输出)和另一个文件。反过来说,

cat file2.DAT -

-本身代表stdin或stdout中的几个工具(例如catdifftar)。由于cat按照您命名的顺序将文件复制到stdout,因此您可以在序列中的任何位置复制stdin。