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.
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.
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.
s='grep jagdeep file1.txt |awk '{print $1}''
egrep $s file2.txt