
您好,我有一個文件,其中有很多以 結尾的行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
效果非常好:)