O comando na variável um afeta a saída de outra variável quando exibida em conjunto no UNIX

3

Estou tendo dois nomes de arquivos, Extra_info e Class_info

Class_info contém dados:

stuId stuName stuClass 
S01    jagdeep  First
S02    harsh    First
S03    Roop     Second
S04    Kali     Third

Extra_info contém informações extras sobre o aluno como

stuId stuCity stuEmail         stuPhone
S01    Sirsa  [email protected]  1234567890

Estou obtendo resultado de ambos os arquivos usando grep para stuId e exibindo o resultado como:

res1='grep $stuId $locDir/Class_info'
res2='grep $stuId $locDir/Extra_info|cut -d" " -f2-' 
## also I tried res2='grep $stuId $locDir/Extra_info|awk '{$1="" ; print $0}''
echo $res1 $res2

Em vez de exibir:

     S01 jagdeep First Sirsa  [email protected]  1234567890

Ele está exibindo:

     Sirsa  [email protected]  1234567890

Como eu poderia pensar na hora do eco, a variável res2 está anulando o resultado de res1.

Por favor, sugira a possível razão para isso e forneça uma solução para o mesmo.

    
por Learner 19.02.2014 / 17:18

2 respostas

8

Seus arquivos de entrada provavelmente têm terminações de linha CR-NL, então $ res1 retorna o cursor para o início da linha e, em seguida, $ res2 sobrescreve-o. Execute seus arquivos por meio de dos2unix para corrigir isso.

    
por 19.02.2014 / 17:51
0
s='grep jagdeep file1.txt |awk '{print $1}''
egrep $s file2.txt
    
por 19.02.2014 / 18:06

Tags