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

效果非常好:)

相关内容