2016-11-04 3 views
0

내가 (예를 들어)이 같은 화학 좌표가 .xyz 파일의 수천이 : 내가 나오지도 또는 머리와 꼬리와 같은 간단한 명령에 대한 많은 검색첫 줄 명령 이전에 줄 바꾸기를하는 방법은?

Fe  0.000000000  0.000000000  0.000000000 
    C  2.112450000  0.000000000  0.000000000 
    C  0.039817193  1.817419422  0.000000000 

을의 카운트 수를 쓰기 파일의 맨 위에있는 줄 (줄 바꿈과 함께 \ n과 전체 숫자 앞에 두 개의 공백이 있음)은 성공할 수 없습니다. 나는 주어진 도움에 정말로 감사 할 것입니다. 출력은 MST 이렇게 될 :

3 
Fe  0.000000000  0.000000000  0.000000000 
C  2.112450000  0.000000000  0.000000000 
C  0.039817193  1.817419422  0.000000000 
당신은 복합 명령으로 그것을 할 수 있습니다
+1

@ Zohck은 – Amir

+0

을'cat <(printf "$ (wc -l Sundeep

답변

1

: 나는 wc가 첫 번째 줄에 파일 이름을 인쇄하지 않도록하기 위해이 <을 사용

(wc -l < fileA && cat fileA) > outputA 

주 . Mac OS에서 최소한 리디렉션을 사용하지 않으면됩니다.


편집 :

mkdir output 
ls *.xyz | while read filename; do 
    (wc -l < $filename && cat $filename) > output/$filename 
done 

그냥 재미를 위해, 여기에 명령 당신이해야 하지 사용하지만 경우에 따라 작동합니다 : 당신은 많은 파일을 동일하게 적용해야하는 경우 :

tee xxx < fileA | wc -l > xxx # don't do this 
+0

답장을 보내 주셔서 감사합니다. 첫 번째 명령은 하나의 파일에 완벽하게 작동하지만 파일이 5000 개 이상인 상황에서 파일 이름을 유지하고 모든 파일에 대해이 명령을 적용하려면 어떤 변경을해야합니까? (예 : "* .xyz") – Amir

+0

@Amir : 모든 * .xyz 파일에 루프를 작성하는 예제를 추가했습니다. –

+0

대단히 고마워, 내 문제를 완벽하게 해결했다. 정말 도움을 주셔서 감사합니다 – Amir

1

이 시도 :

sed '1i \ 
'$(wc -l < file.xyz) file.xyz 

find 여러 파일을 처리하고 -i 플래그 사용 장소에있는 파일 을 편집하려면 :

find . -name '*.xyz' -exec sh -c 'sed -i "1s/.*/$(wc -l < {})\n&/" {}' \; 

NB : 파일이이 명령 위치에서 편집 될 것이다, 당신은 할 수 있습니다를 먼저 출력을 확인하십시오. 이렇게하려면 sed 뒤에 -i 플래그를 제거하십시오. 명령이 사용자 요구를 충족하는 경우 -i 플래그를 다시 추가하십시오.

+0

도움과 도움이되는 의견에 감사드립니다. – Amir