2014-08-29 29 views
2

我正在嘗試讀取/ grep一段特定的單詞或內容(.)。在一段時間之前grep一個特定內容

例如file1abinaya.ashok,我想grep什麼是在期間(.)之前沒有任何硬編碼。

,如果我嘗試

grep \.\ file1 

它給abinaya.ashok。 我試過了:grep\*\.\ file1

它沒有提供任何東西。我們可以使用grep命令找到它,或者我們應該只使用awk命令來執行它?有什麼想法嗎?

+0

它總是瑣碎,選擇你想要什麼,更難不要選擇你不想要的東西。發佈幾行樣本輸入和預期輸出,其中包括您認爲最難處理的情況。 – 2014-08-29 23:07:12

回答

2

使用GNU grepPCRE正則表達式(非貪婪和積極的前瞻),你可以這樣做:

echo 'abinaya.ashok' | grep -oP '.*?(?=\.)' 
abinaya 

使用awk

echo 'abinaya.ashok' | awk -F\. '{print $1}' 
abinaya 
+1

不知道OP是否可能有像'freddy frog abinaya.ashok'這樣的線條,只想看到'abinaya' – 2014-08-29 23:03:59

+0

@MarkSetchell Ha!好點子。如果他關心更具體的話,會更新。 – 2014-08-29 23:04:41

+0

感謝您的評論和回答:)我想grep詞(/)之前沒有硬編碼ieabinaya.ashok.Bascially我想殺死一個屏幕與它的ID,所以內容之前點內容將自動生成編號。使用腳本我想殺死屏幕。 – javalearner 2014-09-02 17:13:59

0

希望我理解正確的話:

sed -n 's/\..*//p' file1 | grep whatever 

sed的表達會點之前只打印部分(不包括點線不打印)。 現在使用grep來搜索你所需要的。

+0

謝謝你的回答dimba。 – javalearner 2014-09-02 17:32:03

0

檢查下面的簡單的例子。

包括點:

$ echo abinaya.ashok | grep -o '.*[.]' 
abinaya. 

沒有點:

$ echo abinaya.ashok | grep -o '^[^.]\+' 
abinaya 
相關問題