2011-04-28 4 views
0

파일 이름 목록과 함께 unload.dat 파일이 있습니다. 작업은 unload.dat 파일에있는 각 파일에서 몇 가지 매개 변수 세부 정보를 추출하는 것입니다. 모든 파일에는 아래 정보가 들어 있습니다.아래의 시나리오에 대해 유닉스 스크립트 작성을 도우십시오

우리가 unload.dat에서 첫 번째 파일 이름 (file_name1.ksh)에 대해 생각해 보자 :

graph_name = abcd.ksh 

export name_a=value_a 
export "name_b=value_b" 
export name_c=value_c 
export name_d=value_d 
export name_e="value_e" 
export name_f="value_f" 

다음 파일의 가져온 데이터가 동일한 출력 파일에서 이전 파일의 출력에 추가해야합니다.

출력은 다음과 같아야합니다

abcd.ksh name_a value_a 1 filename_1.ksh 
abcd.ksh name_b value_b 1 filename_1.ksh 
abcd.ksh name_c value_c 1 filename_1.ksh 
abcd.ksh name_d value_d 1 filename_1.ksh 
abcd.ksh name_e value_e 1 filename_1.ksh 


abcd.ksh name_a value_a 2 filename_2.ksh 
abcd.ksh name_b value_b 2 filename_2.ksh 
abcd.ksh name_c value_c 2 filename_2.ksh 
abcd.ksh name_d value_d 2 filename_2.ksh 
abcd.ksh name_e value_e 2 filename_2.ksh 
+0

우리는 value_b는 등 1 또는 2로 변환 생각하십니까? –

+0

안녕 Jim value_b는 0 또는 1. 중 하나입니다. 일부 ksh 스크립트 에서이 매개 변수의 값은 0이며 일부는 1 – srihari

답변

0
#!/bin/sh 

counter=1 
while read -r filename; do 
    if [ "$counter" -ne 1 ]; then 
    echo 
    echo 
    fi 

    IFS== read _ graph < "$filename" 
    graph=${graph# } 

    sed -n '/^export/{s/^[^ ]* //;s/"//g;p}' < "$filename" \ 
    | while IFS== read -r name value; do 
    echo "$graph $name $value $counter $filename" 
    done 

    counter=$((counter+1)) 
done < unload.dat 
+0

안녕하세요 samsus 대단히 감사합니다. 확인을하고 질문이있을 경우 돌아올 것입니다. – srihari

-1
#!/bin/bash 
var1=`cat unisc.txt | sed -n '1,1p' | cut -f3 -d' '` 
var2=`cat unisc.txt | wc -l` 
va1=1 
var=`expr $var2 - 1` 
echo $var 
for ((i=1;i<=2;i++)) 
do 
    for ((j=1;j<=$var;j++)) 
    do 
     var3=`sed 's/"//g' unisc.txt | cut -f2 -d' ' | cut -f1 -d'=' | sed -n '2,'$var2'p' | sed -n $j'p'` 
     var4=`sed 's/"//g' unisc.txt | cut -f2 -d' ' | cut -f2 -d'=' | sed -n '2,'$var2'p' | sed -n $j'p'` 
     echo "$var1 $var3 $var4 $i filename_1.ksh" 
    done 
done 
관련 문제