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
就密码文件看,我们需要提取字段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