如何查找bash
中字符串中沒有重複的單詞?我想知道是否有一個「本地」bash
這樣做的方式,或者如果我需要使用另一個命令行實用程序(如awk,sed,grep,...)。例如,var1="thrice once twice twice thrice";
。我需要一些能將「一次」這個詞分開的詞,因爲它只出現一次(即沒有重複)。查找字符串中只出現一次的單詞
回答
您可以通過空格分割後的字符串使用sort
,uniq
:
tr ' ' '\n' <<< "$var1" | sort | uniq -u
這將產生once
您的輸入。
(如果輸入包含標點符號,你可能會想,以避免意外的結果任何事情之前將其刪除。)
@ devnull的回答是更好的選擇(無論是簡單性和可能的表現),但如果你正在尋找一個慶典,唯一的解決辦法:
注意事項:
- 用途關聯數組,僅在bash 4或更高版本中可用:
- 在輸入單詞列表中使用文字
*
將不起作用(但其他類似glob的字符串也可以)。 - 正確處理多行輸入和輸入多個空白字符。詞之間。
# Define the input word list.
# Bonus: multi-line input with multiple inter-word spaces.
var1=$'thrice once twice twice thrice\ntwice again'
# Declare associative array.
declare -A wordCounts
# Read all words and count the occurrence of each.
while read -r w; do
[[ -n $w ]] && ((wordCounts[$w]+=1))
done <<<"${var1// /$'\n'}" # split input list into lines for easy parsing
# Output result.
# Note that the output list will NOT automatically be sorted, because the keys of an
# associative array are not 'naturally sorted'; hence piping to `sort`.
echo "Words that only occur once in '$var1':"
echo "---"
for w in "${!wordCounts[@]}"; do
((wordCounts[$w] == 1)) && echo "$w"
done | sort
# Expected output:
# again
# once
有趣。儘管如此,它不完全是我所說的*高雅的* ... – BenjiWiebe
同意 - 堅持@ devnull的解決方案,並把它當作bash的關聯數組的示範。 – mklement0
只是爲了好玩,AWK:
awk '{
for (i=1; i<=NF; i++) c[$i]++
for (word in c) if (c[word]==1) print word
}' <<< "$var1"
once
+1;容易推廣到處理_multi-line_ input:'awk'{for(i = 1; i <= NF; i ++)c [$ i] ++; } END {for(word in c)if(c [word] == 1)print word}'<<<「$ var1」'。有一點需要注意:輸出單詞列表不會被排序。 – mklement0
- 1. 查找只出現一次的單詞
- 2. 在只出現一次的字符串中查找字符
- 3. 查找python中字符串中單詞的出現次數3
- 4. C++:查找字符串中字符的最後一次出現
- 5. 查找字符串中的單詞詞
- 6. indexOf在字符串中查找所有出現的單詞
- 7. 從字符串中刪除單詞的第一次出現?
- 8. 替換字符串中最後一次出現的單詞 - c#
- 9. 如何更改字符串中第一次出現的單詞
- 10. 如何查找字符串中所有單詞的出現次數
- 11. 查找每個單詞出現在字符串中的次數php
- 12. iOS - 在字符串中查找單詞出現次數的最有效方法
- 13. 查找字符串中第一次出現子串的位置
- 14. 查找字符串中的單詞
- 15. 使用Ruby查找字符串中字符的出現次數
- 16. 查找字符串中出現字符的次數
- 17. 查找字符串中字符的最後出現次數
- 18. PHP:查找字符串中的最後一次出現
- 19. 如何查找Swift字符串中子字符串的最後一次出現?
- 20. 如何查找給定字符串中的第一個字符,該字符只出現一次
- 21. 計算字符串向量中單詞的出現次數
- 22. 計算單詞出現在字符串中的次數?
- 23. 如何查找只有大寫字母的單詞(字符串)?
- 24. 查找字符串「出現兩次,一個字母」
- 25. 如何查找只出現在字符串中的數字?
- 26. 從字符串中的一組單詞中出現一個單詞
- 27. 檢查一次出現在字符串中相同字符的
- 28. 查找字符串的最後一次出現
- 29. 字符串查找單詞的Javascript
- 30. 如何查找一個字符串中字符出現的總次數?
我會說沒有,有沒有簡單而優雅的方式。 (雖然我準備證明是錯誤的一半,但這個網站很棒。) – tripleee
定義了「拆分」。 –
@KarolyHorvath'var1'將被閒置。我只需要以某種方式擁有獨特的單詞,所以我可以在腳本的其餘部分使用它。 – BenjiWiebe