二、shell对文本的操作
01.查看文本的命令
#cat /etc/passwd(并非对文本文件操作)
#tail -5 /etc/passwd(查看末尾5行)
#tail -f /var/log/messages(对日志文件监视)
02.使用正则表达式的命令
#cat
sdkjfalkdsjf
sdkjfalkdsjf
ieakjnhgalkdsjlk
ieakjnhgalkdsjlk
#grep aaaa (具有筛选的作用)
ald;sjflkajds
asdkjflajsdf
sadfa
aaaasdfadffds
aaaasdfadffds
#grep -R -l
#grep byf /etc/passwd
byf:……:…:…
byf123:……:…:…
#grep '\<byf\>' /etc/passwd(筛选)
byf:……:…:…
#cut -d: -f1 /etc/passwd | grep byf(截断)
byf
byf123
#grep byf /etc/passwd | cut -d : -f7(截断+筛选)
/bin/bash
/bin/bash
#cut -d: -f7 /etc/passwd(查看所有用户的主目录)
#sort -t: +2(从第二列开始) -n(ASCII码值排列) /etc/passwd
(按照这个要求保存?否)
#sort -t: +2(从第二列开始) -n(ASCII码值排列) -r(反向排序) /etc/passwd
#sort -t: +2(从第二列开始) -n(ASCII码值排列) /etc/passwd > /tmp/a
#cat /tmp/a(在a这个文件中排列好)
#du(显示文件属性) | sort
1172
1198
12
123
13
#du(显示文件属性) | sort -n -r
降序排列
#du | sort | -n -r |head -n 3 |cut -f2 (显示文件属性,降序排列,头3条,第二列内容)
#grep -R (对文件以及子文件筛选)
#grep -R -l(只显示文件名) ‘文件名’
#grep -v(不包含改文件名的查找出来) -l -R -c(行号) -A2 -D2
#cut -d: -f2-4 -c1-5
#sort -n -r -t +2
#grep -A5(显示下文的5行) -B5(显示上文的5行) byf /etc/passwd
#wc /etc/passwd
42 67 1925 /etc/passwd
#wc -l(行) /etc/passwd
42 /etc/passwd
#wc -w(单词) /etc/passwd
67 /etc/passwd
#wc -c(字符) /etc/passwd
1925 /etc/passwd
#cut -d: -f7 /etc/passwd
(把大家的shell显示出来)
#cut -d: -f7 /etc/passwd |uniq(每种shell只显示一种)
#cut -d: -f7 /etc/passwd |sort|uniq(排序+只显示一种)
#cut -d: -f7 /etc/passwd |uniq|wc -l(显示行号)
#diff a.txt b.txt(比较a和b文件的区别)
文件版本不同时:
uniq
diff
patch -p0 < patch.2.6.20
#locate -r "正则表达式"
#grep 'byf' /etc/passwd
#echo * (是一个文件名)
#echo '*'
*
#grep 's.*k'(包含s,k中间任意多个字符)
#grep 'sherk$' a (以sherk结尾的字符串)
#grep '^sherk' a (以sherk开头的字符串)
匹配单个字符 ‘\.’,'\*'
匹配一个单词 '\<s..k\>'
匹配以aaa开头的单词 '\<aaa'
匹配18个a开头的单词 'a\{18\}'
#vi /usr/shre/dict/words
#grep '.\{40,\}' name (四十个字符以上的单词)
#grep '^i.\{18\}n$'
#vi /etc/squid/squid.conf(配置信息)
#grep -v(不包含) '^#' /etc/squid/squid.conf | grep -v '^$'(去掉空格)| wc -l(显示行号)
#%s/byf/tttttt/g(替换全文的byf为tttttt)
#%s/byf\/tttttt/g
#locate -r '正则表达式'
#grep '^[abc]' /etc/passwd(以a或b或c开头的单词)
#grep '^[^a-c]' /etc/passwd (不是以a,b,c开头的单词)
.
.*
^a
a$
\<good
Sh\>
[abc]
[^abc]
a*表示空、a,aa,aaa,……
a?表示一个或零个单独的a
a+表示a,aa,aaa,……
a\{n\} 表示重复了n次的a