Grep

Grep 不工作(在某些文件上)?

  • February 2, 2022

我有一個 MSSQL 數據庫轉儲,我正在嘗試 grep。但是,grep 似乎根本不起作用。這是該文件的一個片段。

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

但是,當我對其進行 grep 操作時,我得到了 nada。

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

為了咯咯笑,我創建了另一個文件“tempfile”:

$ cat tempfile 
alter

Alter

ALTER
$

並在其上執行相同的 grep:

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

關於為什麼 grep 不適用於某些文件的想法?讓我擔心的是,當我必須通過一堆東西找到一個小塊時,它“可能”會失去一些東西。想法?

啊。謝謝你。

$ 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

我在數據庫轉儲方面遇到了同樣的問題。通過設置編碼使用的另一種解決方案vi對我有用。

我更喜歡使用dos2unix命令,它也很有效。

引用自:https://serverfault.com/questions/809830