cconv是建立在iconv之上,可以UTF8编码直接转换,并增加了词转换。
sudo apt-get install cconv
使用cconv进行简繁转换的方法为:
cconv -f UTF8-CN -t UTF8-HK zh-cn.txt -o zh-hk.txt
字符串处理命令expr用法简介: 名称:expr 用途:求表达式变量的值。 语法: expr Expression 实例如下: 例子1:字串长度 shell>> expr length "this is a test content"; 22 例子2:求余数 shell>> expr 20 % 9 2 例子3:从指定位置处截取字符串 shell>> expr substr "this is a test content" 3 5 is is 例子4:指定字符串第一次出现的位置 shell>> expr index "testforthegame" s 3 例子5:字符串真实重现 shell>> expr quote thisisatestformela thisisatestformela
-b 不对空白行编号。 -e 使用 $ 字符显示行尾。 -n 从 1 开始对所有输出行编号。 -q 使用静默操作(禁止错误消息)。 -r 将所有多个空行替换为单行(“压缩”空白)。 -t 将制表符显示为 ^I。 -u 不对输出进行缓冲。 -v 可视地显示非打印控制字符。
$ nl /etc/issue
1 CentOS release 5.4 (Final)
2 Kernel \r on an \m
列操作
$ last | grep 'neo' | cut -d ' ' -f1
$ cat /etc/passwd | cut -d ':' -f1
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
$ cat /etc/passwd | cut -d ':' -f1,3,4
# cat /etc/passwd | cut -d ':' -f1,6
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
lp:/var/spool/lpd
sync:/sbin
shutdown:/sbin
halt:/sbin
mail:/var/spool/mail
uucp:/var/spool/uucp
operator:/root
games:/usr/games
gopher:/var/gopher
ftp:/var/ftp
nobody:/
vcsa:/dev
saslauth:/var/empty/saslauth
postfix:/var/spool/postfix
sshd:/var/empty/sshd
rpc:/var/cache/rpcbind
rpcuser:/var/lib/nfs
nfsnobody:/var/lib/nfs
ntp:/etc/ntp
nagios:/var/log/nagios
行操作
$ cat /etc/passwd | cut -c 1-4
root
daem
bin:
sys:
sync
game
man:
$ echo "No such file or directory"| cut -c4-7
such
$ echo "No such file or directory"| cut -c -8
No such
$ echo "No such file or directory"| cut -c-8
No such
Following will convert text files between DOS, Mac, and Unix line ending styles:
$ recode /cl../cr <dos.txt >mac.txt $ recode /cr.. <mac.txt >unix.txt $ recode ../cl <unix.txt >dos.txt
[neo@test .deploy]$ echo `< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c 8` GidAuuNN [neo@test .deploy]$ echo `< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c 8` UyGaWSKr
我常常使用这样的随机字符初始化密码
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:alnum:] | head -c 8`
xig8Meym
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:alnum:] | head -c 8`
23Ac1vZg
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:digit:] | head -c 8`
73652314
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:graph:] | head -c 8`
GO_o>OnJ
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:graph:] | head -c 10`
iGy0FS/aO5
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:graph:] | head -c 50`
;`E^{5(T4v~5$YovW.?%_?9la<`+qPcRh@7mD\!Whx;MJZVQ\K
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:print:] | head -c 50`
fy$[#:'(')jt'gp1/g-)d~p]8 :r9i;MO2d!8M<?Qs3t:QgK$O
[neo@test .deploy]$ echo `< /dev/urandom tr -dc [:graph:] | head -c 50`
6SivJ5y$/FTi8mf}rrqE&s0"WkA}r;uK-=MT!Wp0UlL_lF0|bL
批量生成
for i in {1..10}
do
echo `< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c 8`
done
# cat /dev/urandom | tr -cd [:alnum:] | fold -w30 | head -n 20 AVqROzjF6ZATJGv2J6PzDHp3jLpKV4 ONt68UFNDwgXpSnLBV7oRDX3VLRYsX EZTWCGvZc3mIEeuw9sxMtV8ZkzVRJv BhUiv0a7utsjZFLYpKGZrY5aDXcZL4 5YfUl2hmDT1O9X61DRYg4wSp4lXoXX ykyPJxH47PzxnNGlujIUF98ZtB01H0 QyP53mksQN8bCNNo1fSD3RtqhhEGfa u2RkT1M9GUQF4a6O18tG5WD97OOXze Whm5X7398Q8L9BONN8k2oLy9CL37JO TmGQz7WB6WnkjhyB4wrBHBJ3HMIRyf hww43yvddUDYUnbNOKjhv3sLhCA4YD uY6zQtBC6miwLUl3jkCVVA0Xu8ASgj jv58qu46VW7LvRIq4txNE8bG9NBlZl pzaMkydAiCHCF5H2oQVqMn4DTTYgNL yoN2A9LyrCwLfjP1ad9HMAwxExJL5i J27iy2L90m9dpcPLJ8tl46GGb9xqmQ 6YwFCvuPHyyEwnctUTpqLFcvUafVZ2 Nuq9XgIgRQGynjlVqGLMOpO0MkGpsn tChkRG7eoRuKVXgW7ccTGx45E54K3Y qPv48XqdGlOrdULCOGZ45kwJ1v5kVX
sudo apt-get install apg $ apg Please enter some random data (only first 16 are significant) (eg. your old password):> imlogNukcel5 (im-log-Nuk-cel-FIVE) Drocdaf1 (Droc-daf-ONE) fagJook0 (fag-Jook-ZERO) heabugJer4 (heab-ug-Jer-FOUR) 5OsEsudy (FIVE-Os-Es-ud-y) IrjOgneagOc9 (Irj-Og-neag-Oc-NINE) $ apg -M SNCL -m 16 WoidWemFut6dryn, byRowpEus-Flutt0 |QuogCagFaycsic0 ojHoadCyct4Freg_ Vir9blir`orhohoo bapOip?Ibreawov2
grep -v "grep"
[root@development ~]# ps ax | grep httpd 6284 ? Ss 0:10 /usr/local/httpd-2.2.14/bin/httpd -k start 8372 ? S 0:00 perl ./wrapper.pl -chdir -name httpd -class com.caucho.server.resin.Resin restart 19136 ? S 0:00 /usr/local/httpd-2.2.14/bin/httpd -k start 19749 pts/1 R+ 0:00 grep httpd 31530 ? Sl 0:57 /usr/local/httpd-2.2.14/bin/httpd -k start 31560 ? Sl 1:12 /usr/local/httpd-2.2.14/bin/httpd -k start 31623 ? Sl 1:06 /usr/local/httpd-2.2.14/bin/httpd -k start [root@development ~]# ps ax | grep httpd | grep -v grep 6284 ? Ss 0:10 /usr/local/httpd-2.2.14/bin/httpd -k start 8372 ? S 0:00 perl ./wrapper.pl -chdir -name httpd -class com.caucho.server.resin.Resin restart 19136 ? S 0:00 /usr/local/httpd-2.2.14/bin/httpd -k start 31530 ? Sl 0:57 /usr/local/httpd-2.2.14/bin/httpd -k start 31560 ? Sl 1:12 /usr/local/httpd-2.2.14/bin/httpd -k start 31623 ? Sl 1:06 /usr/local/httpd-2.2.14/bin/httpd -k start
$ curl -s http://www.example.com | egrep -o '<a href="(.*)">.*</a>' | sed -e 's/.*href="\([^"]*\)".*/\1/'
$ mysqlshow | egrep -o "|\w(.*)\w|" Databases information_schema test
$ cat file.html | grep -o \
-E '\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'
$ cat file.html | grep -o -E 'href="([^"#]+)"'
$ cat sss.html | grep -o -E 'thunder://([^<]+)'
递归查询
$ sudo grep -r 'neo' /etc/*
递归替换
for file in $( grep -rl '8800.org' * | grep -v .svn ); do
echo item: $file
[ -f $file ] && sed -e 's/8800\.org/sf\.net/g' -e 's/netkiller/neo/g' $file >$file.bak; cp $file.bak $file;
done
$ cat /etc/resolv.conf nameserver localhost nameserver 208.67.222.222 nameserver 208.67.220.220 nameserver 202.96.128.166 nameserver 202.96.134.133 $ grep -c nameserver /etc/resolv.conf 5
# grep -c GET /www/logs/access.log 188460 # grep -c POST /www/logs/access.log 421
返回匹配当前行至下面N行
# grep -A1 game /etc/passwd games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin # grep -A2 game /etc/passwd games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
返回匹配当前行至上面N行
# grep -B1 game /etc/passwd operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin # grep -B2 game /etc/passwd uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
neo@neo-OptiPlex-380:~$ grep -C 1 new /etc/passwd mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh neo@neo-OptiPlex-380:~$ grep -C 5 new /etc/passwd sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh # grep -3 game /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin
# grep --color root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
可以通过alias别名启用--color选项
alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto'
加入.bashrc中,每次用户登录将自动生效
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
n 开头
$ grep '^n' /etc/passwd news:x:9:9:news:/var/spool/news:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh neo:x:1000:1000:neo chan,,,:/home/neo:/bin/bash nagios:x:116:127::/var/run/nagios2:/bin/false
bash 结尾
$ grep 'bash$' /etc/passwd root:x:0:0:root:/root:/bin/bash neo:x:1000:1000:neo chan,,,:/home/neo:/bin/bash postgres:x:114:124:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash cvsroot:x:1001:1001:cvsroot,,,,:/home/cvsroot:/bin/bash svnroot:x:1002:1002:subversion,,,,:/home/svnroot:/bin/bash
中间包含 root
$ grep '.*root' /etc/passwd root:x:0:0:root:/root:/bin/bash cvsroot:x:1001:1001:cvsroot,,,,:/home/cvsroot:/bin/bash svnroot:x:1002:1002:subversion,,,,:/home/svnroot:/bin/bash
regular 匹配一组
egrep "2010:(13|14|15|16)" access.2010-11-18.log > apache.log
ps ax |grep -E "mysqld|httpd|resin"
源文件
# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sat Sep 10 00:25:46 2011 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=091f295e-ea6d-4f57-9314-e2333f7ebff7 / ext4 defaults 1 1 UUID=b3661a0b-2c50-4e18-8030-be2d043cbfc4 /www ext4 defaults 1 2 UUID=4d3468de-a2ac-451c-b693-3bdca8832096 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
匹配每行包含4个连续字符的字符串的行。
# grep '[A-Z]\{4\}' /etc/fstab
UUID=091f295e-ea6d-4f57-9314-e2333f7ebff7 / ext4 defaults 1 1
UUID=b3661a0b-2c50-4e18-8030-be2d043cbfc4 /www ext4 defaults 1 2
UUID=4d3468de-a2ac-451c-b693-3bdca8832096 swap swap defaults 0 0
Interpret PATTERN as a Perl regular expression. This is highly experimental and grep -P may warn of unimplemented features.
[neo@netkiller nginx]$ grep -Po '\w+\.js' www.netkiller.cn.access.log index.js min.js min.js mCustomScrollbar.js min.js ajax_gd.js ajax.js validation.js AC_RunActiveContent.js WdatePicker.js cookie.js msg_modal.js all.js common.js commonjs.js swfobject.js dateutil.js form.js live800.js lang.js cycle2.js min.js carousel.js tabify.js image.js min.js ctrl.js packed.js min.js common.js
egrep = grep -E 在egrep中不许看使用转意字符,例如
# grep '\(oo\).*\1' /etc/passwd root:x:0:0:root:/root:/bin/bash # grep -E '(oo).*\1' /etc/passwd root:x:0:0:root:/root:/bin/bash # egrep '(oo).*\1' /etc/passwd root:x:0:0:root:/root:/bin/bash
$ snmpwalk -v2c -c public 172.16.1.254 | egrep -i 'if(in|out)'
for pid in $(ps -axf |grep 'php-cgi' | egrep egrep "0:00.(6|7|8|9)"'{print $1}'); do kill -9 $pid; done
for pid in $(ps -axf |grep 'php-cgi' | egrep "0:(0|1|2|3|4|5)0.(6|7|8|9)" |awk '{print $1}'); do kill -9 $pid; done
$ du -s * | sort -k1,1rn
$ rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n
$ dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
history | cut -c 8- |sort -r | uniq -u
# netstat -ant|fgrep ":"|cut -b 77-90|sort |uniq -c
1 CLOSE_WAIT
1 CLOSING
88 ESTABLISHED
7 FIN_WAIT1
7 FIN_WAIT2
3 LAST_ACK
4 LISTEN
1 SYN_RECV
1 SYN_SENT
177 TIME_WAIT
$ (printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM/YEAR NAME\n" ; ls -l | sed 1d) | column -t $ cat /etc/passwd |tr ':' ' ' | column -t $ cat /etc/passwd |tr ':' ' ' | column -t | colrm 20 20
反转字符串
# echo hello | rev olleh # echo "hello world" | rev dlrow olleh
反转文件内容
# rev /etc/passwd hsab/nib/:toor/:toor:0:0:x:toor nigolon/nibs/:nib/:nib:1:1:x:nib nigolon/nibs/:nibs/:nomead:2:2:x:nomead nigolon/nibs/:mda/rav/:mda:4:3:x:mda nigolon/nibs/:dpl/loops/rav/:pl:7:4:x:pl cnys/nib/:nibs/:cnys:0:5:x:cnys nwodtuhs/nibs/:nibs/:nwodtuhs:0:6:x:nwodtuhs tlah/nibs/:nibs/:tlah:0:7:x:tlah nigolon/nibs/:liam/loops/rav/:liam:21:8:x:liam nigolon/nibs/:pcuu/loops/rav/:pcuu:41:01:x:pcuu nigolon/nibs/:toor/:rotarepo:0:11:x:rotarepo nigolon/nibs/:semag/rsu/:semag:001:21:x:semag nigolon/nibs/:rehpog/rav/:rehpog:03:31:x:rehpog nigolon/nibs/:ptf/rav/:resU PTF:05:41:x:ptf nigolon/nibs/:/:ydoboN:99:99:x:ydobon nigolon/nibs/:ved/:renwo yromem elosnoc lautriv:96:96:x:ascv nigolon/nibs/:ptn/cte/::83:83:x:ptn nigolon/nibs/:htualsas/ytpme/rav/:"resu dhtualsaS":67:994:x:htualsas nigolon/nibs/:xiftsop/loops/rav/::98:98:x:xiftsop nigolon/nibs/:dhss/ytpme/rav/:HSS detarapes-egelivirP:47:47:x:dhss hsab/nib/:lqsym/bil/rav/:revres LQSyM:994:894:x:lqsym hsab/nib/:www/:noitacilppA beW:08:08:x:www nigolon/nibs/:xnign/ehcac/rav/:resu xnign:894:794:x:xnign