行が特定の文字列で終わるかどうかを確認するにはgrepを使用します。

行が特定の文字列で終わるかどうかを確認するにはgrepを使用します。

こんにちは。 で終わる行がたくさんあり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

それは完璧にうまくいきました:)

関連情報