Leetcode之shell编程题总结

linux正则匹配电话号码

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

linux打印第N行

方法一:

awk 'NR==10' file.txt  //awk的默认动作就是打印$0,所以NR==10后面可以不用加{print $0}

方法二:

sed -n '10p' file.txt  //如果不够10行,则什么也不打印

方法三:

line=$(cat file.txt | wc -l)     //千万注意,等号前后一定不要有空格
if [ "$line" -ge 10 ] ; then   //$line的双引号也可以不用加
  cat file.txt | head -n 10 | tail -n 1
fi

linux 统计单词数据并按频次降序
一行命令
方法一

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

解释:
tr -s ’ ’ ‘\n’ 用换行替换空格,这样每一行就是一个单词了
sort -nr n是以数字排序 r是逆序(降序)

方法二:

awk '
{for(i=1;i<=NF;i++)
{s[$i]++;}
}
END{
for(i in s)
{print i " " s[i]}
}' words.txt | sort -nr -k 2

sort的k参数是以第几列来排序的意思

对于文本行按列聚合

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++) 
}' file.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值