题目描述
思路
基于对单列文件排序,即 sort |uniq -c|sort -nr
,故只需要把空格替换成换行符,成为单列文件。
空格替换\n
的几种方式
-
tr
# translate or delete characters
说到替换命令,第一个想到的就是tr
命令tr -s ' ' '\n'
-
sed
sed
有替换的功能sed 's/old/new/g'
,所以空格替换为换行命令sed 's? ?\n?g'
或者sed 's?\s?\n?g'
-
printf
# format and print data
格式化打印数据,printf "%s\n"
逐个单词换行打印 -
xargs
xargs
分割字符串 -n 1表示每行输出一个 - for 循环
for i in `cat words.txt`;do echo $i;done
for循环是逐个读单词的
最后第一列与第二列交互位置,列处理自然使用 awk
awk '{print $2,$1}'
完整的一行命令答题
1. cat words.txt|tr -s ' ' '\n'|sort |uniq -c|sort -r|awk '{print $2,$1}'
2. cat words.txt|sed 's? ?\n?g' |sort |uniq -c|sort -r|awk '{print $2,$1}'
3. printf "%s\n" `cat words.txt` |sort |uniq -c|sort -r|awk '{print $2,$1}'
4. cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk '{print $2" "$1}'
5. for i in `cat words.txt`;do echo $i ;done | sort |uniq -c | sort -nr |awl '{{print $2" "$1}}'