2016-05-25 5 views
0

私はスクリプトに問題があります。それは、入力中のファイルRUBRICAを取る2つのconcatenatend varをコマンドシェルbashに入れてください

andrea bargnani 6956959388 2632634643 2012/05/19 

chris bosh 87654323234 78675432334 2014/06/16 

zlatan ibrahimovic 2937485929 1938472639 2003/06/30 

andrea mantovani 3402948586 0459687124 2015/01/25 

andrea mantovani 3476589456 0451234567 2016/07/05 

andrea mantovani 3478765434 67654334567 2011/09/10 

marco polo 735636 36546456 2011/09/10 

とモミ列ノームVarのとで保存各行について:

while read line; do 

    IFS=' '               
                    #sostituisco in IFS il carattere di default con quello di spazio 
    i=0 
    for campo in $line; do 
     ((i++)) 
     if [[ $i -eq 1 ]] ; then          
      nome="$campo" 
     elif [[ $i -eq 2 ]] ; then         
      cognome="$campo" 
     fi 
    done 
    nome_file=$nome\_$cognome          
    echo $nome_file 
    j=$(find /home/ubuntu/Scrivania/Contatti -name 'nome_file*' | wc -l) 
    echo $j  

done < $RUBRICA 

ファイルRUBRICAはそのような行が含まれています。私は、次のスクリプトを持っています2番目のvar cognomeは2番目の列です。そう、最初の行のために、私はループの後

nome=andrea 
cognome=bargnani 

があるでしょう、スクリプトがnome_fileと呼ばれる新しいVarのアンダースコアで2つのVARを連結します。私はコマンドでこのvar(nome_file)を使用します。問題は、私はこのvarをコマンドに入れる方法を知らないということです。構文は何ですか?

答えて

0

あなたは、このような$nome_file使用できます。

j=$(find /home/ubuntu/Scrivania/Contatti -name "$nome_file*" | wc -l) 

を...しかし$ RUBRICAには多くの行がある場合は、forループ遅くなります。

代わりに、awk、例えばを使用:

awk '{printf "%s_%s\n", $1, $2}' $RUBRICA | while read nome_file; do 
    echo $nome_file 
    j=$(find /home/ubuntu/Scrivania/Contatti -name 'nome_file*' | wc -l) 
    echo $j  
done 
+1

私はあなたの最初のコマンドを実行してください。それは完璧に動作します、あなたは天才です。今私は2番目を試してください –

+0

私はあなたの2番目のアドバイスを試みて、ターミナルは私にこのエラーを呼び出します: awk:行1:暴走文字列定数 "%s_%s \ n、$ ... –

+0

oops、typo。 ''を閉じる。一定。 – webb

関連する問題