我正在嘗試讀取/ grep一段特定的單詞或內容(.
)。在一段時間之前grep一個特定內容
例如file1
有abinaya.ashok
,我想grep什麼是在期間(.
)之前沒有任何硬編碼。
,如果我嘗試
grep \.\ file1
它給abinaya.ashok
。 我試過了:grep\*\.\ file1
它沒有提供任何東西。我們可以使用grep命令找到它,或者我們應該只使用awk命令來執行它?有什麼想法嗎?
我正在嘗試讀取/ grep一段特定的單詞或內容(.
)。在一段時間之前grep一個特定內容
例如file1
有abinaya.ashok
,我想grep什麼是在期間(.
)之前沒有任何硬編碼。
,如果我嘗試
grep \.\ file1
它給abinaya.ashok
。 我試過了:grep\*\.\ file1
它沒有提供任何東西。我們可以使用grep命令找到它,或者我們應該只使用awk命令來執行它?有什麼想法嗎?
使用GNU grep
爲PCRE
正則表達式(非貪婪和積極的前瞻),你可以這樣做:
echo 'abinaya.ashok' | grep -oP '.*?(?=\.)'
abinaya
使用awk
:
echo 'abinaya.ashok' | awk -F\. '{print $1}'
abinaya
不知道OP是否可能有像'freddy frog abinaya.ashok'這樣的線條,只想看到'abinaya' – 2014-08-29 23:03:59
@MarkSetchell Ha!好點子。如果他關心更具體的話,會更新。 – 2014-08-29 23:04:41
感謝您的評論和回答:)我想grep詞(/)之前沒有硬編碼ieabinaya.ashok.Bascially我想殺死一個屏幕與它的ID,所以內容之前點內容將自動生成編號。使用腳本我想殺死屏幕。 – javalearner 2014-09-02 17:13:59
希望我理解正確的話:
sed -n 's/\..*//p' file1 | grep whatever
sed的表達會點之前只打印部分(不包括點線不打印)。 現在使用grep來搜索你所需要的。
謝謝你的回答dimba。 – javalearner 2014-09-02 17:32:03
檢查下面的簡單的例子。
包括點:
$ echo abinaya.ashok | grep -o '.*[.]'
abinaya.
沒有點:
$ echo abinaya.ashok | grep -o '^[^.]\+'
abinaya
它總是瑣碎,選擇你想要什麼,更難不要選擇你不想要的東西。發佈幾行樣本輸入和預期輸出,其中包括您認爲最難處理的情況。 – 2014-08-29 23:07:12