2014-03-13 4 views
0

폴더에는 파일 이름이 여러 개인 파일이 여러 개 있습니다. 이 두 번째 파일과 마지막 파일을 다른 파일로 복사해야합니다.여러 파일의 2 줄 복사

(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 나오지 사본 2 라인과 내가 마지막으로 생성 된 파일을 찾을 필요가 있기 때문에 마지막 줄에 꼬리 명령과 관련이 나오지도 2)에 대한 작업을 수행 예를 들어 1,1.1,1.2 .., 2.9,3. 위 명령을 셸별로 루프에서 어떻게 수행 할 수 있습니까? 다음 스크립트를 시도했지만 작동하지 않습니다.

#!/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

2 및 파일에 복사 마지막 줄은 단순히 파일의 목록을

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

수행 할 수있는 우리는 효율적인 SED/AWK을 가지고 좀 더 사양이 필요합니다/스크립트

+0

좋은 점은, 내가 동시에 라인을 복사 할 수 있음을 잊었다! 하지만 내 질문에 루프에서 어떻게 해야할지 알아 냈어. 하나는 루프 내부의 sed 명령에 $ n 대신 $ {n}으로 넣는 것이었다. 감사 – physiker

0

이 당신을 위해 작동 할 수 있습니다 (GNU는 나오지도) :

sed -sne '2w file3' -e '$w file3' file1 file2 
관련 문제