LeetCode Shell

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/piaocoder/article/details/55095604

192. Word Frequency

cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -rn | awk '{print $2" "$1}'

tr -s: 使用指定字符串替换出现一次或者连续出现的目标字符串(把一个或多个连续空格用换行符代替);
sort: 将单词从小到大排序;
uniq -c: uniq用来对连续出现的行去重,-c参数为计数;
sort -rn: -r 倒序排列, -n 按照数值大小排序;
awk '{ print $2, $1 }': 格式化输出,将每一行的内容用空格分隔成若干部分,$i为第i个部分。


193. Valid Phone Numbers

cat file.txt | grep -Eo '^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$|^([0-9]{3}-){2}[0-9]{4}$'

^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$ 匹配形如(123) 456-7890的电话号码
^([0-9]{3}-){2}[0-9]{4}$ 匹配形如987-123-4567的电话号码


194. Transpose File

awk '{
    for (i = 1; i <= NF; ++i){
        if (NR == 1) s[i] = $i;
        else s[i] = s[i] " " $i;
    }
} END{
    for (i = 1; s[i] != ""; ++i){
        print s[i];
    }
}' file.txt

和C语言类似

NF:每一行拥有的字段总数,即:列

NR:目前awk所处理的是“第几行”数据,即:行


195. Tenth Line

awk:

awk 'NR == 10' file.txt
sed:

sed -n "10p" file.txt


猜你喜欢

转载自blog.csdn.net/piaocoder/article/details/55095604