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