Question Grep ne fonctionne pas (sur certains fichiers)?


J'ai un dump de base de données MSSQL que j'essaye de passer par grep. Cependant, grep ne semble pas fonctionner du tout. Voici un extrait du fichier.

...
    ALTER DATABASE [Documents] SET RECURSIVE_TRIGGERS OFF
    GO
    ALTER DATABASE [Documents] SET  DISABLE_BROKER
    GO
    ALTER DATABASE [Documents] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
...

Cependant, quand je fais un grep dessus, je suis nada.

$ cat Documents.sql | grep -i 'alter'
$ <nothing>
$ cat Documents.sql | grep -i 'go'
$ <nothing>

Pour rire, j'ai créé un autre document 'tempfile' avec:

$ cat tempfile 
alter

Alter

ALTER
$

Et couru le même grep dessus:

$ cat tempfile | grep -i 'alter'
alter
Alter
ALTER

Vous pensez pourquoi grep ne fonctionnerait pas sur certains fichiers? Je crains que lorsque je dois fouiller dans un tas de choses pour trouver une petite pépite, il se peut qu'il manque quelque chose. Pensées?


5
2017-10-18 18:55


origine


Je suspecte que le fichier ne soit pas en UTF-8 puisqu'il provient d'un système Windows. - Michael Hampton♦


Réponses:


Ahh Je vous remercie.

$ file -bi Documents.txt
text/plain; charset=utf-16le
$ vi Documents.txt

set encoding=utf-8
set fileencoding=utf-8

$ file -bi Documents.txt
text/plain; charset=utf-8
$ cat Documents.txt | grep -i 'alter'
ALTER DATABASE [Documents] SET COMPATIBILITY_LEVEL = 120
ALTER DATABASE [Documents] SET ANSI_NULL_DEFAULT OFF 
ALTER DATABASE [Documents] SET ANSI_NULLS OFF 
ALTER DATABASE [Documents] SET ANSI_PADDING OFF

6
2017-10-18 19:05