
こんにちは。 で終わる行がたくさんありmain.css">
、その一部が繰り返されているファイルがあります。
これらの行のコピーを 1 つだけ保持し、重複する行を削除したいと思います。
grep を使用して、ファイルに で終わる行があるかどうかを検索できますかmain.css">
?
これまでのところ、私は次のことをやりました:
grep ' main.css' file.txt |sort | uniq -u
これは期待通りには機能せず、ただ空白の出力しか得られません。助けてください。これは
答え1
以下を使用する必要があります:
grep -n 'main\.css">$' file.txt
$
行の終わりを示します。当然、この後には何も続くことはできません。
ここでは は必要ありません*
。行内でパターンを検索しているため、パターンが見つかった場合は、その前にあるものはすべて自動的に無視されます。ここでエスケープする必要があるのは、.
内の唯一の正規表現演算子である だけですmain.css">
。また、-r
ファイルを 1 つだけ指定する場合は は冗長になります。
答え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
それは完璧にうまくいきました:)