Linux

head 和 grep 顯示的文本與 gedit 不同

  • August 2, 2022

我嘗試從日誌文件中獲取一些資訊,但我使用 grep 獲取數字,並且我想要獲取我在 gedit 中看到的文本。

命令結果fileASCII text, with CR, LF line terminators

我還檢查了nano顯示文本。

head 和 gedit 的結果

圖片相應地在 CLI 中顯示 ,1650 個數字,在 gedit 中顯示 NMEA 文本,這是查看同一文件的開頭的結果。

od -tx1a your_file | head -n30

0000000 4e 4d 45 41 2c 24 47 4e 47 47 41 2c 31 32 30 38
NMEA , $ GNGGA , 1 2 0 8
0000020 32 34 2e 37 35 32 2c 35 32 31 36 2e 33 31 34 34
2 4 . 7 5 2 , 5 2 1 6 。3 1 4 4
0000040 2c 4e 2c 30 32 30 35 39 2e 30 38 37 37 2c 45 2c
, N , 0 2 0 5 9 。0 8 7 7
0000060 30 2c 30 2c 2c 35 37 2e 35 2c 4d 2c 33 38 2e 39
0 , 0 , , 5 7 . 5,米,3 8。9
0000100 2c 4d 2c 2c 2a 36 31 0d 2c 31 36 35 39 30 31 30
, 米, , * 6 1 鉻, 1 6 5 9 0 1 0
0000120 31 30 34 30 30 30 0a 4e 4d 45 41 2c 24 47 50 47
1 0 4 0 0 0 nl NMEA , $ GPG
0000140 53 41 2c 41 2c 31 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c
SA , A , 1 , , , , , , , , , ,
0000160 2c 2c 2c 39 39 2e 39 39 2c 39 39 2e 39 39 2c 39
, , , 9 9 . 9 9,9 9。9 9 , 9
0000200 39 2e 39 39 2a 33 30 0d 2c 31 36 35 39 30 31 30
9. 9 9 * 3 0 鉻 , 1 6 5 9 0 1 0
0000220 31 30 34 30 30 30 0a 4e 4d 45 41 2c 24 47 4c 47
1 0 4 0 0 0 nl NMEA , $ GLG
0000240 53 41 2c 41 2c 31 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c
SA , A , 1 , , , , , , , , , ,
0000260 2c 2c 2c 39 39 2e 39 39 2c 39 39 2e 39 39 2c 39
, , , 9 9 . 9 9,9 9。9 9 , 9
0000300 39 2e 39 39 2a 32 43 0d 2c 31 36 35 39 30 31 30
9. 9 9 * 2 C cr , 1 6 5 9 0 1 0
0000320 31 30 34 30 30 30 0a 4e 4d 45 41 2c 24 42 44 47
1 0 4 0 0 0 nl NMEA,$ BDG
0000340 53 41 2c 41 2c 31 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c
SA , A , 1 , , , , , , , , , ,

您的終端顯示 \n (LF)的換行符,但您的文件包含看似不同的換行符。正如所聲稱的那樣,它不是 CRLF,因為否則您的終端實際上會顯示換行符!

嘗試通過管道dos2unix進行顯示:

dos2unix < somefile.nmea | head

然而,老實說,您的文本文件中有兩種不同類型的換行符這一事實讓我非常懷疑產生這種情況的 GPS 韌體。順便說一句,NMEA 對此非常清楚,行之間的分隔符是 LF,因此控制台上的簡單輸出肯定會顯示正確的內容!

引用自:https://unix.stackexchange.com/questions/712184