正则表达式和条件语句

正则表达

基本表达,扩展正则表达(-E)

元字符,
. grep 'r..t' /etc/passwd
  [] [abc]root至少一个 [^abc]
* 次数匹配 a*root,abroot不,aaroot,aroot,root
.* 任意长度任意字符
\(n\) a\(2\)root
\(m,n\) 范围\(0,2\)root
\(n,\) 至少N次

globbing,文件名通配

锚定:
^ ^root 行首
$ root$ 行尾
\<  \<root 词首
\>  root\> 词尾
\b  root\b \broot \broot\b
\(...\)  love your lover \(love\).*\1r

grep --color=auto 'r..t' /etc/passwd > /dev/null

cut
-d 分隔符
-f 选取的段


* 0<=
? 0,1  a?root  broot
+ 1<=  a+root

| like your lover,love your lover  l(ik)|(ov)e your lover

wc 统计行,字,字节

sort,排序
-o /tmp/passwd.sort 保存到文件中
-r 逆序
-n 数值排序
-f 忽略大小写
-u 去掉重复行

-t :-k 3
uniq 去除重复的行
  -c 显示重复次数
  -u 不显示重复行
  -d 显示重复行

条件判断:0真 1假
  test expression  # test 1 -gt 2
  [ expression ]  # [ 1 -gt 2 ]
  [[ expression ]]  # [[ 1 -gt 2 ]]

-a 与
-o 或
! 非

[ $B -gt $A -a $B -gt $C ]

短路操作符:

&&
[ $B -gt $A ] && [ $B -gt $C ]
||
[ $B -gt $A ] || [ $B -gt $C ]

条件测试:

  整数测试:
  -gt >
  -lt <
  -ge >=
  -le <=
  -eq =
  -ne 不等于[ $A -ne $B ]
  字符串测试:
  =
  !=
  >
  <
  -z 字符串长度是否为零
  -n 字符串长度是否为空

  文件测试:
  -e FILE 存在
  -f FILE 文件
  -d FILE 目录
  -r FILE 可读
  -w FILE 可写
  -x FILE 可执行
  -L/-h FILE 测试一个文件是否符号链接文件
  -O FILE 测试此文件属主是否是所属
  -G FILE 测试此文件属组是否是所属

diff/patch 打补丁
  -u
  diff vimrc vimrc2 > vimrc.patch
  patch vimrc < vimrc.patch
  patch -R vimrc < vimrc.patch 降级


sed非交互式编辑器,行编辑器

10,$s/root/ROOT/g
/root/,/student/s/root/ROOT/

s/ftp:\/\/instructor.example.com\/pub/file:\/\/\/media\/cdrom/g
s&ftp:\/\/instructor.example.com\/pub&file:\/\/\/media\/cdrom&g

s/rcct/RccT/

s/root/rootable/
s/r..t/&able/

sed -i可以对文件内容直接编辑

-e 多项
-f 从文件sed.txt中读取条件
   sed -f sed.txt server.repo

1,$ 第一行到最后一行
p 显示
d 删除
s/pattern/substitude/g, i 忽略大小写

模式化的编辑器:

  命令模式,输入模式,末行模式

vim +n 
  vim +10 file
vim +/redhat file

打开方式:
  vim a.txt

退出:
  :wq
  :q
  :w!
  :q!
  :w /path/to/your/file 另存为
  shift +ZZ


行内移动:
  ^,非空白行首
  0,绝对行首
  $,绝对行尾

单词为单位:
  w:下个词首
  b:当前/上个词首
  e:词尾

行间:
  G:最后一行
  nG:n行

末行模式:
  :n

句:)(
段落:}{

命令-->输入:
  i:insert
  I: 行首
  a:append
  A: 行尾
  o:光标下新行
  O:光标上新行

  c:删除进入输入模式
  C:删除行进入输入
  u:撤销上步

替换:
  r:替换单字符
  R:替换模式

删除:
  x:光标后
  X:光标前
  d:删除  dd nd
  :%d删除全文
  :.,$-1d

复制内容:
  y  :10,100y
  p:下方  P:上方

移动:
  d

可视模式:
  v:
  V: 对角线矩形块

查询:
  /pattern 搜索匹配字符串
  ?pattern 尾部
  n N 上一个 下一个
 
查找并替换:
  :%s/addr1/addr2/gi 同sed

撤销操作:
  u 最近一次
  U 最近一次所有操作
  Ctrl+r 撤销撤销

vim a b c d
  :next 切换下个
  :prev 切换前个
  :first 切换第一个
  :last 切换最后个

vim分割窗口
  -o水平
  -O垂直

如何定制vim显示特征:
  vim .vimrc
    set nu
  autoindent:自动缩进 set ai
  ignorecase:忽略大小写 set ic
  showmatch:括号

shell算术运算:
  $((expression))
  $[expression]
  let

  +,-,\*,/,%,++,--,+=

  A=2
  B=3
  let A=$A+$B

条件分枝,三类:
if [];then
  ..
  ..
  ..
fi

if [];then
  ..
  ..
else
  ..
  ..
fi

if [];then
  ..
  ..
elif [];then
  ..
elif [];then
  ..
else
 ..
fi

嵌套

循环分枝
while
for
until

for VAR in list;do
  ..
  ..
done

let SUM=0
for I in 1 2 3 4 5;do
  let SUM+=$I
done
echo $SUM

while [];do
  ..
done

let I=1
let SUM=0
while [ $I -le 100 ];do
  let SUM+=$I
  let I++
done

while read LINE;do
  ...
done < /etc/issue

cat /etc/issue | while read LINE;do
...
done

until [];do
  ...
done

面向对象:
顺序
选择
循环


给网卡eth0配置地址:
  vim /etc/sysconfig/network-scripts/ifcfg-eth0
    BOOTPROTO=dhcp,bootp,static
    IPADDR=
    NETMASK=


here document: <<
cat >> FILE << EOF
This is the first line.
the second line.
EOF


function:函数
代码块
bash:

格式一:
function name{
}

格式二:
name () {
}

你可能感兴趣的:(函数,vim,sed,条件语句,短路操作符)