2013-11-02 32 views
0

我想從一個以'Residue XXX'開頭的文件grep一行。它只適用於'Residue',但不起作用,如果我有'Residue XXX'這種行爲的任何原因?爲什麼在這個例子中「grep」的行爲有所不同?

這是工作:

grep '^Residue' log.txt 
Residue XXX highDenisity 

,而不是工作:

grep '^Residue XXX' log.txt 
+1

@KeepCalmAndCarryOn - 顯然不是:第一個grep工作。 – Malvolio

+1

嘗試:'grep'^ Residue.XXX'log.txt'。用'od -c'或'cat -t'來看看它返回的結果。 –

+1

哇!它有它的選項卡 –

回答

2

握住你的手,如果你認爲有ResidueXXX之間的製表符。

+1

合理的猜測。你會幫助如何診斷? ('grep'^ Residue'log.txt | od -c'想起來。) –

+0

@JonathanLeffler - 我正在挖掘'cat'文檔來尋找可以打印出標籤的東西。我想,使用更好的正則表達式。 – Malvolio

+1

哦,是的,'貓'從伯克利揮舞着旗幟回來......(SO或谷歌搜索應該可以找到;也可以參考http://quotes.cat-v.org/programming/)。 'cat -v'幾乎可以完成這項工作('v'代表'visible',但是你也需要'-t'來查看標籤;它意味着'-v')。 –

0

改爲使用空白不可知的正則表達式。

grep '^Residue\s*XXX' log.txt 

這個正則表達式涵蓋了多個標籤或一個標籤和單詞之間的空格。

+0

由於某些原因,這在MacOS上不起作用。 – Malvolio

0

或者你可以做一個邏輯andawk這樣的:

awk '/^Residue/ && /XXX/' file 

這將只是做輸出線開始Residue還含有XXX

您也可以使and這樣:

awk '/^Residue.*XXX/' file 
+0

有沒有在那裏用大錘殺蒼蠅,是嗎? 'grep'^ Residue'log.txt | grep XXX'會完成同樣的事情。 – Malvolio

+0

'awk'毫不猶豫地做這個工作。這是設計要做的事情之一。 :) – Jotne

相關問題