2014-03-13 36 views
0

在一個文件夾中,我有幾個文件,其名稱中包含多個參數。我應該將所有這些文件的第二行和最後一行復制到另一行。下面的命令做這項工作的一個文件(1 SED副本二號線和sed是關係到最後一行tail命令,因爲我需要找到最後生成的文件中的第二個。):複製多個文件的兩行

(sed -n '2p' $(ls -rt1 pa*p3.3_*.txt | tail -1) && sed -n '$p' $(ls -rt1 pa*p3.3_*.txt | tail -1)) >> f1.txt 

現在參數P在例如1,1.1,1.2 ..,2.9,3的範圍內。我如何在shell中循環執行上述命令?我嘗試過以下腳本,但不起作用:

#!/bin/bash 

num=$(awk 'BEGIN{for(i=1;i<=3;i+=0.1)print i}') 
for n in $num 
do 
    (sed -n '2p' $(ls -rt1 pa*p$n_*.txt | tail -1) && sed -n '$p' $(ls -rt1 pa*p$n_*.txt | tail -1)) 
done 

我該如何執行此任務?一般來說,如何在循環中執行命令?提前致謝!

回答

1

我不太清楚,但第二和複製到文件的最後一行可以簡單地通過

sed -n '2p;$p' ListOfYourFiles > f1.txt 

的文件列表進行,我們需要更多的規範,有一個高效的SED/AWK /腳本

+0

好點,我忘了,我可以兩條線同時複製!但我的問題是關於如何在一個循環中做的事情,我發現在循環內的sed命令中只需要將$ {n}而不是$ n放入。謝謝 – physiker

0

這可能會爲你工作(GNU SED):

sed -sne '2w file3' -e '$w file3' file1 file2