C script de shell: como eu comparo duas strings?

1

Sou um usuário da shell C.

Eu tenho dois arquivos.

arquivo 1:

A
B
C
D
E

arquivo 2:

A
C
B
D
E

Quero comparar apenas A-A , B-C , C-B , D-D , E-E usando um loop for .

Se as strings corresponderem, imprima "correspondência".

A saída ficaria assim:

A A -> match
B C -> " "
C-B -> " "
D-D -> match
E-E -> match

Como eu uso o loop for ?

    
por user2905046 22.10.2013 / 01:50

1 resposta

1

Aqui está um exemplo de script que faz uso do comando paste para agrupar os dois arquivos em uma única lista:

A-A
B-C
...

Em seguida, ele analisa cada string combinada em suas duas partes descrete e as armazena nas variáveis f1 e f2 .

#!/bin/csh

foreach i ('paste -d"-" file1 file2')
  set f1='echo $i | cut -d"-" -f1'
  set f2='echo $i | cut -d"-" -f2'
  if ($f1 == $f2) then
    echo "$f1 $f2 -> match"
  else
    echo "$f1 $f2 -> "'" "'
  endif
end

O resto do código é shell C padrão.

Exemplo

$ ./cmd.csh
A A -> match
B C -> " "
C B -> " "
D D -> match
E E -> match

Referências

por 22.10.2013 / 03:12