Sort
為什麼 sort -u 只刪除管道中的重複項?
在此命令中,
sort -u
刪除了重複項。curl https://en.wikipedia.org/wiki/Help:Special_page -s | grep -oP 'Special:\K[a-zA-Z0-9]*' | sort -u > special_page_names
在這個命令中,它沒有。
curl https://en.wikipedia.org/wiki/Help:Special_page -s | grep -oP 'Special:\K[a-zA-Z0-9]*' > special_page_names sort -u special_page_names
為什麼 sort -u 只刪除管道中的重複項?
即,為什麼在正常文件上執行時不刪除重複項?
sort
是一個過濾器。它讀取輸入,以某種方式修改數據並列印輸出。grep
也是一個過濾器。通常,過濾器通過讀取其標準輸入並寫入其標準輸出來工作。
如果
… | grep … | sort -u > special_page_names
標準輸入sort
from fromgrep
和標準輸出sort
go tospecial_page_names
。|
您通過使用betweengrep
andsort
和> special_page_names
在末尾使用來請求此操作。語法
sort -u special_page_names
告訴工具忽略其標準輸入(在您的互動式 shell 中,這是終端,標準輸入從 shell 繼承)並改為讀取special_page_names
。標準輸出不重定向;它是從 shell 繼承的標準輸出,通常是終端,在你的情況下是終端。special_page_names
數據從你的終端飛來。如果要將 的輸出保存
sort -u special_page_names
到正常文件,那麼一種方法是重定向 的輸出sort
,就像在第一種情況下一樣。不要重定向回special_page_names
雖然;選擇另一個文件。sort -u special_page_names > special_page_names_sorted
有一些工具可以修改他們讀取的文件(例如文本編輯器)。有一些過濾器可以選擇覆蓋他們讀取的文件(例如
sed -i
)。您可以通過將文件指定為選項參數-o
和操作數來對同一文件進行排序寫入:sort -u -o special_page_names special_page_names