
Здравствуйте, у меня есть файл, в котором много строк, заканчивающихся на main.css">
, и некоторые из них повторяются.
Я хочу сохранить только одну копию этих строк и удалить повторяющиеся строки.
Могу ли я использовать grep для поиска в файле строки, заканчивающейся на main.css">
?
На данный момент у меня есть:
grep ' main.css' file.txt |sort | uniq -u
Это не делает ничего, как я ожидал, это просто дает мне пустой вывод. Пожалуйста, помогите? Это не
решение1
Вам следует использовать:
grep -n 'main\.css">$' file.txt
$
обозначает конец строки, очевидно, после этого ничего следовать не может.
Здесь вам не нужно *
, так как вы ищете шаблон внутри строки, все, что находится перед вами, автоматически игнорируется, если ваш шаблон найден. Единственное, что вам нужно здесь экранировать, это .
который является единственным оператором регулярного выражения в 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
Это сработало просто отлично :)