awk 및 bash 스크립트를 출력하는 코드를 작성하고 싶습니다. 이 스크립트는 기본적으로 프로그램을 병렬로 실행하기 위해 작은 파일로 파일을 잘라냅니다. 이제는 필자가하는 것처럼 설정된 번호를 사용하지 않고 peices의 수를 제어하려고합니다. 현재 코드는 awk를 사용하여 파일을 10 부분으로 잘라낸 다음 bash 스크립트를 실행하도록 설정됩니다.awk/bash 스크립트 작성
awk -v a=$a '{if (NR<(a/10)&&NR>=0) print }' $1 > $11
awk -v a=$a '{if (NR<(a/10*2)&&NR>=(a/10*1)) print }' $1 >$12
awk -v a=$a '{if (NR<(a/10*3)&&NR>=(a/10*2)) print }' $1 >$13
awk -v a=$a '{if (NR<(a/10*4)&&NR>=(a/10*3)) print }' $1 >$14
awk -v a=$a '{if (NR<(a/10*5)&&NR>=(a/10*4)) print }' $1 >$15
awk -v a=$a '{if (NR<(a/10*6)&&NR>=(a/10*5)) print }' $1 >$16
awk -v a=$a '{if (NR<(a/10*7)&&NR>=(a/10*6)) print }' $1 >$17
awk -v a=$a '{if (NR<(a/10*8)&&NR>=(a/10*7)) print }' $1 >$18
awk -v a=$a '{if (NR<(a/10*9)&&NR>=(a/10*8)) print }' $1 >$19
awk -v a=$a '{if (NR<=(a/10*10)&&NR>=(a/10*9)) print }' $1 >$110
bash $2 $11&
bash $2 $12&
bash $2 $13&
bash $2 $14&
bash $2 $15&
bash $2 $16&
bash $2 $17&
bash $2 $18&
bash $2 $19&
bash $2 $110&
나는 20을 입력 할 수 있기를 원하며이 스크립트를 20 번 쓸 것이다. 나는 내 머리 속에서이 일을하는 방법을 생각해 낼 수 없다.
도움 주셔서 감사합니다.
편집
변수에 대한 일부 자세한 내용
나는 또한 다음 코드 줄 수 루프 작성하는 방법을 잘 모르겠어요a=`wc -l $1 | cut -f 1 -d " "`
:
cat $11.tab $12.tab $13.tab $14.tab $15.tab $16.tab $17.tab $18.tab $19.tab $110.tab > $3
당신은 AWK 명령의 당신의 시리즈를 대체 할 수있다 (한 번만 파일을 스캔해야)하는은'split' 명령을 살펴 있어야합니다. 그런 다음'split'에 의해 생성 된 파일 집합을 반복하고 병렬 bash 명령을 실행할 수 있습니다. –
'$ 110'은 아마도'$ 20'을위한 오타 일 것이며'$ {20}'이어야합니다. 모든 두 자리 위치 매개 변수는 [위치 매개 변수] (http://www.gnu.org/software/bash/manual/bash.html#Positional-Parameters) 중괄호로 묶어야합니다. '$ {1} 1','$ {1} 2' 등을 의미한다면, 중괄호를 사용하여 명확하게 만들 수 있습니다 (또는'$ 1.1' 또는 ...) 부분을 분리하기 위해 점을 사용하십시오). –
'$ a'의 값은 무엇입니까? '$ 1'의 줄 수입니까? 'a = $ (wc -l <$ 1)'또는 therabouts에서와 같이? –