grep 查看一行是否以特定字串結尾

grep 查看一行是否以特定字串結尾

您好,我有一個文件,其中有很多以 結尾的行main.css">,其中一些是重複的。

我只想保留這些行的一份副本並刪除重複的行。

我可以使用 grep 來搜尋檔案中是否有以 結尾的行嗎main.css">

到目前為止我有:

 grep ' main.css' file.txt |sort | uniq -u

這沒有達到我的預期,它只是給了我一個空白的輸出。請幫忙?這沒有

答案1

你應該使用:

grep -n 'main\.css">$' file.txt

$表示行尾,顯然,此後不能再有任何內容。

您不需要此處*,因為您正在該行內搜尋模式,如果找到您的模式,前面的所有內容都會自動忽略。這裡唯一需要轉義的是.which 是 中唯一的正規表示式運算子main.css">-r當您只提供一個文件時,這也是多餘的。

答案2

你也可以使用 awk,

$ cat file
foo main.css">
ghj
brar main.css">

$ awk '/main\.css">$/{print NR}' file
1
3

或者sed

$ sed '/main\.css">$/=' file
1
3

答案3

我認為您還想保留其他沒有的行,main.css>即使這些行是重複的:

Line 1
Line 2
Line 1
Line 2 main.css">
Line 2 main.css">
Line 3 
Line 3 main.css">
Line 4

這樣在命令之後你會得到:

Line 1
Line 1
Line 2
Line 2 main.csv>
Line 3 
Line 3 main.csv>
Line 4

在這種情況下,下面的命令應該可以解決問題: sort your_file | awk '!/main.css">$/;/main.css">$/,/main.css">$/{if($0!=p){print;p=$0}}'

答案4

sed  '/main.css/d' file.txt  > ~/Desktop/solution.txt

效果非常好:)

相關內容