leetcode 四道shell编程题目

leetcode-192 统计词频

cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{ print $2, $1 }'
tr -s ' ' '\n'     将空格替换成回车,每个单词一行
sort               按字典序排序,保证重复的行相邻
uniq -c            去掉重复的行,-c统计词频数
sort -r            按逆序排序
awk '{print $2, $1}' 输出

leetcode-193 有效电话号码

grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt
-P 可以让grep使用perl的正则表达式语法,因为perl的正则更加多元化,能实现更加复杂的场景

leetcode-194 转置文件

awk '{
    for(i=1; i<=NF; i++){
        if(NR==1){
            res[i]=$i;
        }else{
            res[i]=res[i]" "$i;
        }
    }
}
END{
    for(i=1; i<=NF; i++){
        print res[i];
    }
}' file.txt
NF 每一行拥有的字段总数
NR 目前所处理的是第几行数据
transpose=`head -n1 file.txt | wc -w` //统计第一行字段的个数
for i in `seq 1 $transpose`
do
    echo `cut -d' ' -f$i file.txt`
done

leetcode-195 第十行

awk 'NR==10{print $0}' file.txt
awk 'NR==10' file.txt
tail -n+10 file.txt|head -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值