Bashの変数で構成されたwhileループを実行します。

Bashの変数で構成されたwhileループを実行します。

ファイルを1行ずつ読み、各行でいくつかの操作を実行し、出力を新しいファイルに書き込むシェルスクリプトを作成しようとしています。ファイル名がパラメータとして渡されます。

実行時にファイルが渡されるので、実行時に列数を数える必要があります。

列数を計算しました。 アッ そして、ループを使って次の文字列を構築します。

file="$1  
del=$2  
columns=`head -1 $file| awk -F'$del' '{print NF}'``  
cols=''  
    for ((z=1; z<=$columns; z++ ))  
    do  
         cols=$cols" ""col""$z"  
    done       
#if file has 4 columns, value of cols will be "col1 col2 col3 col4"  
While read $cols  
do  
#iterating through each column and apply my function - myfunc to do required conversions on each value. variable- $outvarmyfunc is derived in myfunc   
    outline=""  
    for ((s=1; s<=$columns; s++ ))  
    do  
        eval col=\${col$s}  
        myfunc $col  
#below if condition is to avoid delimter before first word in each line  
        if[ $s -eq 1 ]  
        then   
            outline="$outvarmyfunc"  
        else  
            outline="outline""$del""$outvarmyfunc"    
        fi  
    done  
echo "$outline" >> $file"_modified"  
done < $file  

しかし、次のエラーが発生しても機能しません。 col1 col2 col3 col4: 無効な変数名

15個以上の列を含む大容量ファイルを読む必要があります。

誰でも助けることができますか?

これを達成するためのより効率的な方法はありますか?

ベストアンサー1

おすすめ記事