分享

正则表达式

 终为始 2019-08-05

重定向脚本内部的文本块

#cat  <<EOF> log.txt

  

计算机生成了可选文字:
[roo七e衬,,七es七]tca七<EOF>11q.七x七
一ba3h:EOF:No3uchflleordlrec七ory
[root日衬讨“te3七1tcat<EOF>l闪.t耽
一ba3h:EOF:No3uchflleordlrec七ory
[roo七日衬甘“te3七]奋cat<<EOF>1时.七耽
>IOqfileheader
>七h13laate3t109file
》func七10n:,y3七eln,七a七13七Ic,
>EOF

然后中间输入的内容就会出现在log.txt

计算机生成了可选文字:
[roo七e衬甘甘te3tlt
109flleheader
Ca七
109
。七X七
比i,i,a七e,七IOqfile
func七ion:3y3七em3tat13tlc3
rrootR~te,tl*.

2.自定义文件描述符

其实就是临时性的给文件内容一个变量作为代号,然后等用过了之后就返回给系统,再次cat的时候就是空的,届时需要重新exec 一下

创建一个文件描述符用于写入(截断模式)

计算机生成了可选文字:
[roo七e,,,
【roo七ew讨份
[roo七e衬甘日
newllne
[roo七ew衬材
[rootew衬“
[roo七e衬甘“
th1313己
appended
[roo七ew甘“
【roo七e衬“"
[roo七e,,,
七h1315己
。ppended
appended
七eg七
七e3七
te日t
exec4>Outpu七.七x七
eChOne衬11ne>'4
Ca七OUtpUt。tXt
盈.盈.二份
一...j自..J自..J
七e3七】奋exec
te日七】奋eCho
te,七】tcat
七es七11ne
line
te,七1texec
七e日七]奋echo
七e日七】奋ca七
te3七11ne
11ne
line
5>》Input.七x七
appended11ne>'5
input。txt
6》》inpu七.七xt
appendedline>'6
Input.七x七

其实就是>>>的。只是用了一个数字可以作为临时的变量引用一下而已。

 

 

使用cat压缩连续的空白行

#cat  -s filename (也可以使用cat  filename |tr -s '\n'

计算机生成了可选文字:
[roo七e衬衬衬七e,七]tca七
th1s13己七e3七11ne
app吧ndedline
appendedline
[roo七e甘甘讨七e3七]tman
[roo七尽衬甘“七e,七]奋vlm
[root日甘甘衬七e,t]tca七
linel
一日inpu七.七xt
Ca七
川U工七1bl己nk3。七Xt
一3multiblank日。七Xt
lineZ
line3
line4
[roo七e甘甘讨
[roo七尽衬甘“
[root日甘甘衬
11nel
11neZ
line3
line4
[roo七日甘“"
linel
七e3七]tca七
七e,七]奋八C
七e,t]tca七
一3mllltib18nk日。七Xt人C
皿肚二ltlbl己nks。tX七1tr一S'\n'
七e,七]奋ca七皿肚二ltlblank3。tx七
lineZ
line3
line4
[roo七e衬衬衬七e3七]t

    讲到tr就说下怎么替换大小写等,如果我要把输出的小写全变成大写,那就

计算机生成了可选文字:
[roo七e,,衬七e3七1tca七侧ltl一lanka.七x七1tr'[a一z]"[A一Z]
L工NEI
LTNEZ
LINE3
L工NE4
roo:e~七e,七]。l

 

计算机生成了可选文字:
[roo七e份衬树七e3七]teChothl,13a七e,t11ne>inpu七.txt
[roo七e~七e3七】tecec3<Inpu七.七x七
一b已3h:eCeC:CO""”两”dllotfOUnd
[roo七e~te3七】texec3<Input.七xt
[roo七e~te3七】tca七<'3
thi3i,ate3tline
[roote衬衬甘七e,t]t
〔roo七e衬甘甘七e3七】t
C压七<'3
l

 

 

 

#使用find

find . \( -name "*.txt" -o -name "*.log" \) -print

计算机生成了可选文字:
1JJ气产飞J.'J毛‘
[root日~te,七]f它ind.\(一name"".七x七”一。一na."*.班犷\工恋clnt
。/七i血ng。109
。/功ul七1blank3。七盆七
。,工。g。tX七
。,Inpu七。七x七
。/LOG.七x七
。/七e3七。tXt
。/。utput。t耽
。/OU七。七X七
【roo:e~七e,tl奋习

这里的\(  \)其实就是转义,当成括号用,是一个整体

找到文件并删除

find . -type f -name "*.log" -delete

计算机生成了可选文字:
L",J‘心二”
tot己172
一r份一r一一r一一
一r衬Xr一Xr一X
一r衬Xr一Xr一X
一r衬Xr一Xr一X
一r衬嚣r一Xr一X
一r衬Xr一Xr一X
一r甘一r一一r一一
一r衬一r一一r一一
一r衬一r一一r一一
一r甘一r一一r一一
一r衬Xr一Xr一X
一r匀一r一一r一一
一r衬一r一一r一一
一r衬Xr一Xr一X
一r衬Xr一Xr一X
一r衬嚣r一Xr一X
一r衬Xr一Xr一X
一r甘一r一一r一一
一r衬一r一一r一一
一r衬Xr一Xr一X
[roote、‘八奋
[root日衬甘衬
to七al68
‘亡口‘J!占占
1rootroo七0May1915:212
1roo七roo七82May1913:55debuq.sh
1roo七rOO七45May1914:11for.sh
1rootroo七107May1914:37ifl.sh
1rOOtroo七66May1914:31if.sh
1rootroo七118May1913:44IrS.sh
1roo七rOO七48May1913:00Inpu七.七Xt
1roo七roo七67May1911:08109。七x七
1roo七roo七0May1915:35LOG。七耽
1rootroo七34Hay1915:02InUltl一lankg·t
1roo七r0o七114May1914:08n切吐祀r.sh
1rootroo七8May1912:58ou七pu七.七x七
1roo七roo七94May1911:06ou七.七耽
1roo七rOO七180May1415:32sleep.sh
1rootroo七57May1914:44strl.sh
1rOOtroo七130May1914:39str.sh
1rOOtrOO七260M已r1218:50testl。Sh
1roo七rOO七1May1914:57te日t。t耽
1roo七roo七799May1915:21七1皿ng.IOg
1roo七roo七180May816:30zabb认.sh
te日t]fflnd.一t班班f一na.眨.*.109.一delete
te,七]t11
一r衬一r一一r一一1rOO七rOO七
一r衬Xr一Xr一X1rOO七rOO七
一r衬Xr一Xr一X1rOOtrOO七
一r衬Xr一Xr一X1rOO七rOO七
一r衬Xr一Xr一X1rOO七rOO七
一r甘Xr一Xr一X1rOO七rOO七
一r甘一r一一r一一1rOO七rOO七
一r衬一r一一r一一1rOO七rOO七
一r甘一r一一r一一1rO0trOO七
一r衬一r一一r一一1rOO七r0o七
一r衬Xr一Xr一X1rOOtrOO七
一r衬一r一一r一一1rOO七rOO七
一r衬一r一一r一一1rOO七rOO七
一r衬Xr一Xr一X1rOOtrOO七
一r衬Xr一Xr一X1rOO七rOO七
一r衬Xr一Xr一X1rOO七rOO七
一r甘Xr一Xr一X1rOO七rOO七
一r甘一r一一r一一1rOO七rOO七
一r甘Xr一Xr一X1r0OtrOO七
0May1915:212
82May1913:55debuq.sh
45May1914:11for.sh
107May1914:37ifl.sh
66May1914:31if.sh
118May1913:44IrS.sh
48May1913:00Inpu七·七x七
67May1911:08109。七耽
0May1915:35LOG。t耽
34May1915:02mUltl一lank3·t
114May1914:08n切吐祀r.sh
8May1912:58Ou七pu七·七x七
94May1911:06out.七耽
180May1415:32sleep.sh
57May1914:44strl.sh
130May1914:39str.sh
260M己r1218:50testl.Sh
1May1914:57七e,七·七x七
180May816:30zabb认.sh

#findexec的结合

计算机生成了可选文字:
[roo七e甘衬“te,七]奋
一了衬一r-一r一一1rOO七
~r份~r-一r-~1rOO七
~r份~r-一r-~1rOO七
一r衬一r一一r一一1r00七
一r衬一r一一r一一1r00七
~r甘~r一一r-~1rOOt
~r份~r-一r-~1rOO七
一r衬一r-一r-一1rOO七
[roo七日衬甘“te,七]奋
flnd.一七Vpef一per.644一execl,一l{}\;
roo七34May1915:02·/mUI七1一lank3·七x七
rOO七67May1911:08./109。txt
rOOt0May1915:21./2
roo七48May1913:00。/input.七x七
roo七0May1915:35./LOG。七x七
r0Ot1May1914:57./诀3t。txt
rOO七8May1912:58./。utput。tx七
roo七94May1911:06./out。七x七

find . -type f -perm 644  -exec cp  {}  /tmp \;

这样就可以将find到的东西cptmp目录,这是xargs无法做到的

 

 find .  \( -name "*.sh" -prune \) -o \( -type f -print \)

就是将sh结尾的排除掉

find . \( -path ./test \) -prune -o -print

这个是排除了这个目录下面test目录中区查找

 

find . \( -path ./test \) -prune -o \( -name "*.sh" \)这个就是除了这个目录之外的以sh结尾的文件

 

利用xargs 将换行符替换成空格符

计算机生成了可选文字:
[roo七e衬,,七es七]t
123456
78910
1112
[roo七日衬甘“te3七]奋
123456,89
ca七ex已,ple。七x七
catexa勿ple.tXt1xarg,
101112

也可以一行成多行的形式

cat example.txt |xargs -n 3

计算机生成了可选文字:
占‘J气口O声O,孟U人人占‘
[roo七e甘甘衬te,t]t尼atexa功ple.七x七1xarq3一n3
勺口户们
789
1011
l2

 

计算机生成了可选文字:
101112
[roote~证,t]t
,pllt3pli七3pllt
echo.,pll七X3pll七X,plltX,plltX3pli七.lxarg,一dX
,pllt,pllt
[root日甘“甘沈3t]奋eCho.日pll饮3plltX,plltX,plltX3pli七.Ixa玛,一dX一nZ
,pll七apli七
,pllt3pli七
,pllt
[roote~:e:t]奋口

就是将一个文件一个脚本结合起来,简单地说,xargs就是将前面所得到的结果放到他的命令的最后面。

计算机生成了可选文字:
[roo七e衬,衬
argl
argZ
arq3
【roo七日甘甘“
argl奋
argZ奋
arq3奋
【roo七包衬甘“
七e3七]tca七arq,。七x七
te3t]奋catarq,.tXt
xarq,一nl。/cecho。,h
te3七1奋

#chattr  +i test.txt

#这样之后就无能修改这个文件了

还原的就是chattr  -i test.txt

file test.txt

file -b test.txt 区别就是不输出文件名了

计算机生成了可选文字:
LIJ+b七opped
[root日~te3七]tfile
七e3t。tXt:ASC工工七eXt
[rooto~七e3t]令flle
乃SCllteXt
功已ntlle
七es七.tXt
一b七es七。tX七

 

 

#grep *** filename -q 这样就不会打印出来,

计算机生成了可选文字:
衬Ord=
圈rep二,圈,:hare,d,二,i,nux.,ord:
If[
eChO
e19e
eChO
fi
一eq
:七hen
万二三三not三二
七已二

 

 

练习

  1. 显示/proc/meminfo文件中不区分大小的s开头的行

#grep  -I "^s" /proc/meminfo

计算机生成了可选文字:
InltrdIlnl七r己功fs一2。6。32一343。el6。X
[roote衬甘“~]tgrep一1.几,./proc/此皿nfo
5甘aPCached:0妞
S衬apTo七al:1277944妞
S甘apFree:1277944kB
sb卫巴m:420kB
51己b:63石04kB
SReCI己i讯污hle:41060kB
SUnreClal皿:22544kB

 2.显示/etc/passwd 中以nologin结尾的行

  grep   "nologin$" /etc/passwd

计算机生成了可选文字:
.J几JliJ匕下二气J日L仁皿.”二
‘日二J悦悦J瓜JJ
[roo七尽甘“衬一1tqrep.nol叩In布”/etc/paa3甘d
bln:x:l:l:bln:/bln:/3bin/nol闪in
daeman:x:2:2:daemDn:/3bln:/,bln/nologln
ad劝:x:3:4:adm:/var/adm:Iabln/no1Ogln
lp:x:4:7:lp:Ivar/日pOOI/IPd:/3bln/nol闪In
mall:x:8:12:m己11:/var/3pOOI/mail:/,bln/no1Oqin
uuCP:x:10:14:uuCP:/var/3p0al/uuCP:/,bln/nologln
。perator:x:11:0:。pera七or:/roo七:/,bln/nologln
qa劝吧3:x:12:100:ga亚吧3:/u3r/qa且吧3:/3bin/no1Oqln
qoPher:x:13:30:gOPher:/var/qoPher:/,bln/nologin
ftp:x:14:50:打PU日er:/var/ftp:/3bin/nologln
nobody:x:99:99:NOb(记y:/:/3bin/noloqln
vc3a:x:69:69:virtualcon,ole立IemDryO衬ner:/北v:/3bln/nologin
日a3lau七h:x:499:76:.Sa31au七hduaer":/var/e1叩七y/3a3lauth:I日bln/nol闪in
po,七flx:x:89:89::/var/日pOOI/po日tfix:/,bln/nol闪In
3日hd:x:74:74:Privllege一,epara七edSSH:/var/e功p七y/3,hd:/3bin/nol闪In
ntp:x:38:38::/etc/n七p:/3bln/nologln
apache:x:48:48:APaChe:/var/衬衬衬:/,bin/no1Ogin
七q劝山甲:x:72:72::/:/,bin/nOIOgln
dhc冈:x:177:177:DHCP3erver:/:/,bln/nologln
myu3er3:x:507:509:3川u3er:/ho.e/myu3er3:/日bin/no1Oqln
dbu3:x:81:81:Sy日tem饮日日a醉bu日:/:/日bin/noloqln
haldaemDn:x:68:68:H乃毛dae功On:I:/,bln/nologln
印c:x:32:32:RPCblndDaemDn:/var/cache/rpCblnd:/3bin/nologin
印cu3er:x:29:29:RPCServlceU3er:/var/11b/nf3:/3bln/nologln
nf,nobody:x:65534:65534:几nonV.Du,NFSU日er:/var/lib/nf,:/日bln/no1Ogin

 

 

 

3.显示/etc/inittab中以#开头并且后面跟一个或多个空的字符而后又跟了任意非空白的行

 grep  "^#[[:space:]].*[^[:space:]].*" /etc/inittab

 

 grep  "^#[[:space:]]\{1,\}[^[:space:]].*" /etc/inittab

计算机生成了可选文字:
吞
[roote~/1tqrep.几t[[:,pace:]].*[几[:3pace:1].*"/etc/切i七七曲
t场1七七曲13onlyu,edbyup,七artfort比北faultrunlevel.
tADD工NGOTBERCONF工引兀决丁工ONHEREW工LLH及V艺NOEFFECTONYOURSYSTEH。
tsy,tem场ltlallza七lonl,,七artedby/etc/切1七/rcs.conf
tIndlvldualrunleve13are日tartedby/etc/Inl七/rc.conf
tC七rl一址t一加letei,handledby/e七c/inlt/control一al七一delete.conf
tTermlnalge七ty3arehandledby/e七c/Inlt/七七y.confand/etc/Inlt/3erlal.conf,
tvl七hconflqura七ionin/e七c/3y3confiq/功i七.
tForInfor川。七lononho甘to丫rlteup3七ar七even七handler3,orho衬
tuP日tart甘ork日,日eeInlt(5),Init(8),andInl七ctl(8)。
令Defaul七runlevel。Therunlevel3u3edare:
fo一hal七(DoNOT3et切1七defaul七tothi3)
tl一singleu3erIDode
tZ一Hul七lu3er,衬1七houtNFS(T比3a功ea33,Ifyoudonothavenetworklnq)
令3一功11川ul七lu,er功。de
t4一unu3ed
ts一Xll
t6一reboa七(DoNOT3etInlt此faul七tothl,)

 

4.显示/boot/grub/grub.conf文件中以一个或多个空白的字符开头的行

grep "^[[:space:]].*" /boot/grub/grub.conf

 

grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

计算机生成了可选文字:
七一reOOOLt廿D双Vl3e石InlL0eLdUIL石O毛n13)
[roo七e衬甘甘/It
rOO七
grep.八[[:,pace:]]。*./bao七/grub/grub.conf
(hdo,0)
kernel
主ni七rd
/v功11nuz一2.6.32一343.e16.x86_64roroo七=I配v/..功片rZV匕IGroUP一IV山rootrd--No--不m侣U山G=en--U5.UTr一8rd-尹O」田rd--训长-L’介VOIGro即/Iv--,衬apSY5r0NT=latarCyrheb一,un16
/切i七ramf3一2.6.32一343.e16。x8664。几功g
Cra3

 

5.显示/etc/inittab中包含一个:数字:的行

 

grep ':[0-9]\{1,\}:' /etc/passwd

计算机生成了可选文字:
adm:x:3:4:adm:/var/adm:/,bin/no1Ogin
lp:x:4:7:lp:/var/,pOOI/IPd:I3bln/nologln
,卯c:x:5:0:3卯c:/,bln:/b切/,卯c
3hu七down:x:6:O:,hu七do,n:/3bln:/3bln/3hu七do树n
halt:x:7:0:hal七:/,bin:/日bln/halt
m已11:x:8:12:m已11:/var/,pOOI/m已11:/,bln/noloqln
uuCP:x:10:14:uuCP:/var/3pOOI/uuCP:/gbin/n01Ogln
operator:x:11:0:operator:/root:/日bln/nologln
ga加吧3:x:12:100:qa如吧日:/u日r/qa.吧日:/日bln/nol闪in
qopher:x:13:30:qopher:/var/qopber:/,bln/nologln
f七p:x:14:50:叮PU3er:/var/f七p:/3bln/no1Ogln
nobody:x:99:99:Nobody:/:/,bln/nologin
vc3a:x:69:69:vlrtualcon,oleme功Drya衬ner:/由v:/3bln/nol闪In
3a3lauth:x:499:76:.Sa3lau七hdu3er":/var/elnp七y/,a3lauth:/3bln
po3七flx:x:89:89::/var/3pO01/po3tflx:/3bln/noloqin
3shd:x:74:74:Prlvllege一separa七edSSH:/var/e兀p七y/3ahd:/,bin/n
ntp:x:38:38::/e七c/ntp:/,bin/noloqln
nqinX:x:498:49e:助inxu,er:/var/l止/nglnx:/bln/fal,e
.y日ql:x:27:27:HySQLserver:/var/1止/my日ql:/bln/baah
apache:x:48:48:APache:/var/衬,,:/日bln/nologln
zabblx:x:500:500::/ha.e/z已bbix:/bin/ba日h
七Cpd山叩:x:72:72::/:/3bln/nologin
dllcpd:x:177:177:DHCP,erver:/:/3bln/no1Ogln
七e3tl:x:501:501::/ho功e/te,七1:/bln/ba3h
jian小把1:x:502:503:jian小把i,TYSX,13774355307,39632470:/ho功el
vbirdl:x:503:504::/ho功e/vbirdl:/bln/ba3h
vbirdZ:x:504:505::/ho功e/vblrdZ:/bln/ba3h
myu3erl:x:505巧07:13七u,er:/ho功e/mVu3erl:/bin/ba3h
mVu3erZ:x:506:508:Zndu,er:/ho.e/mVu3erZ:/bin/ba3h
.yu3er3:x:507:509:3rdu,er:/ho功e/mVu3er3:/,bln/no1Ogln
prol:x:508:511:projectau3er:/ho功e/prol:/bin/ba日h
proZ:x:509:512:projectau,er:/ho功e/proZ:/bin/ba日h
pro3:x:51D:513:pro〕ectau3er:/ho功e/pro3:/bln/baah
dbu3:x:81:81:Sy,七e瓜耽,3aqebu,:/:/3bin/nologin
haldaemon:x:68:68:HALdae功On:I:/3bln/nol闪In
丈pc:x:32:32:RPCbindDae功on:/var/cache/rpCbind:/3bln/nOIOgln
印cu3er:x:29:29:RPCservlceU3er:/var/11b/nf3:/abin/nologin
nfanobody:x:65534:65534:及nony功。u3NFSU日er:/var/11b/nf3:/abl
ni3u3erl:x:1001:1001::/ho功e/n13u,erl:/bln/ba3h
ni3u3erZ:x:1002:1002::/ho功吧/n13u日erZ:/bln/ba,h
ni日u3er3:x:1003:1003::/ho劝吧/nl日u3er3:/bln/ba,h
mondrlva:x:4004:1005::/ho劝吧/m已ndriva:/bln/ba,h
fedora:x:2003:2003:FedoraCOm口叼nlty:/ho.e/fedora:/bin/ca3h
hado叩:二:4。。s厂伟
[root日衬甘“~]奋自rep
:H及以力P:/home/hadoop:/bln/ba3h
·:[o一9]\11,\l:·/e:c/pa::w于

 

 

 

 

 

6.显示/etc/inittab中以一个数字开头并以一个5开头,数字相同的数字结尾的行

 

 

找到文件中的一位数或者2位数 /proc/cpuinfo  /proc/meminfo

 

egrep '\<[0-9]{1,2}\>' /proc/meminfo

 

找出ifconfig命令结果中的1~255之间的整数

词首词尾锚定对于数字来说是不能生效的

 

 

查找出当前系统上名为student(必须出现在行首)的用户账号的相关信息,文件为/etc/passwd

 

######匹配1~93

#####^[1-8]{2}$|^[1-9]$|^89$|^9[1-3]$|^[1-8]0$

 

###因为匹配是贪婪模式匹配的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多