shell学习笔记(4)

1、从结构化文本文件中提取数据
就密码文件看,我们需要提取字段5,将他分割为三个子字段,再重新安排将姓名放在第一个字段,接着写入
一个办公室名录行。


awk -F:'{print $5}'
cut -d: -f5


#!/bin/sh
umask 077


PERSON=/tmp/pd.key.person.$$
OFFICE=/tmp/pd.key.office.$$
TELEPHONE=/tmp/pd.key.telephone.$$
USER=/tmp/pd.key.user.$$


trap "exit 1"
trap "rm -f $PERSON $OFFICE $TELEPHONE $USER" EXIT
awk -F:'{print $1 ":" $5}' > $USER
//用等号作为sed命令的分割字符
sed -e 's=/.*==' \   
    -e 's=^\([^:]*\):\(.*\) \([^ ]*\)=\1:\3,\2=' < $USER | sort > $PERSON


//第一个操作是将第一斜杠直到行尾的数据提取出来
//第二个操作就是调整字段


sed -e 's=^\([^:]*\):[^/]*/\([^/]*\)/.*$=\1:\2=' < $USER | sort > $OFFICE
sed -e 's=^\([^:]*\):[^/]*/[^/]*/\([^/]*\)=\1:\2=' < $USER | sort > $TELEPHONE


join -t: $PERSON $OFFICE |
join -t: -$TELEPHONE |
cut -d: -f 2- |      //使用字段2知道最后
sort -t: -k1,1 -k2,2 -k3,3 |
awk -F: '{printf("%~39s\t%s\t%s\n",$1,$2,$3)}'


passwd-to-directory < /etc/passwd | sort -t '*' -k2,2 > dir.by-office
passwd-to-directory < /etc/passwd | sort -t '*' -k3,3 > dir.by-telephone






2、文字解密助手


#!/bin/bash
FILES="
/usr/share/dict/words
…………
…………
      "
pattern="$1"
egrep -h -i "$pattern" $FILES 2> /dev/null | sort -u -f




3、单词出现频率过滤器
#!/bin/bash
tr -cs A-Za-z\' '\n'|
tr A-Z a-z|
sort|
uniq -c |
sort -k1,1nr -k2|
sed $(1:-25)q




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值