LeetCode Shell(192-195)

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

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值