Soru Grep Çalışmıyor (bazı dosyalarda)?


Bir MSSQL veritabanı dökümüm var. Ancak, grep bunun üzerinde hiç çalışmamaktadır. İşte dosyanın bir pasajı.

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

Ancak üzerinde bir grep yaptığımda nada alırım.

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

Kıkırdamalar için başka bir 'tempfile' dosyası oluşturdum:

$ cat tempfile 
alter

Alter

ALTER
$

Ve aynı grep'i üzerinde koştu:

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

Grep, belirli dosyalarda neden çalışmaz? Küçük bir nugget bulmak için bir sürü şeyden bahsetmek zorunda kaldığımda, bir şeylerin eksik olabileceğiyle ilgili endişelerim var. Düşünceler?


5
2017-10-18 18:55


Menşei


Dosya bir Windows sisteminden geldiğinden beri UTF-8'de olmadığından şüpheleniyorum. - Michael Hampton♦


Cevaplar:


Ahh. Teşekkür ederim.

$ 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