shell基础

shell基础

[root@wangchao ~]# history                           //查看历史命令(默认存1000个)

[root@wangchao ~]# ls ~/.bash_history                  //root用户的命令历史

[root@wangchao ~]# echo $HISTSIZE                   

1000                                             //保存1000条命令

[root@wangchao ~]# !!                               //执行上一条命令

echo $HISTSIZE

1000

 

!$执行上一条命令的最后一个参数

[root@wangchao ~]# cat /etc/passwd

[root@wangchao ~]# ls !$

ls /etc/passwd

/etc/passwd

 

[root@wangchao ~]# !684                 //执行第684条历史命令

 

[root@wangchao ~]# !ls                  //执行历史命令最近的已ls开头的命令

ls /etc/passwd

/etc/passwd

 

[root@wangchao ~]# ls /usr/lo[Tab]      //Tab键可补全命令或路径

 

[root@wangchao ~]# alias                  //查看别名

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which--tty-only --read-alias --show-dot --show-tilde'

 

[root@wangchao ~]# alias aaa='cat 1.txt'    //执行aaa=执行cat 1.txt(只在当前shell中有效)

[root@wangchao ~]# aaa

[root@wangchao ~]# unalias aaa                     //取消别名

 

[root@wangchao ~]# ls *.txt                        //*通配符,匹配所有已.txt结尾的

[root@wangchao ~]# ls ?.txt                        //?匹配一个字符

 

| :管道符,将一个命令的结果输出给另一个命令

[root@wangchao ~]# cat /etc/passwd|wc -l            //统计行

35 

 

 

[root@wangchao ~]# echo"111">1.txt            //输出重定向

[root@wangchao ~]# cat 1.txt

111

[root@wangchao ~]# echo"111">>1.txt          //追加重定向

[root@wangchao ~]# cat 1.txt

111

111

 

[root@wangchao ~]# wc -l <1.txt               //反向重定向,把文件内容输出给命令

2

 

[root@wangchao ~]# ls 1111                   //无文件

ls: cannot access 1111: No such file ordirectory

[root@wangchao ~]# ls 1111 > 1.txt              //正确重定向失败(无1111文件)  

ls: cannot access 1111: No such file ordirectory   

[root@wangchao ~]# ls 1111 2> 1.txt            //错误从定向

[root@wangchao ~]# ls 1111 2>> 1.txt           //错误追加从定向

 

 

[root@wangchao ~]# sleep 100             //待机100

Ctrl+C                  //暂停命令,停止命令

[root@wangchao ~]# sleep 100

Ctrl+Z                 //退出命令()

[root@wangchao ~]# jobs                          //查看stop的命令(或任务)

[1]+ Stopped                 sleep 100

[root@wangchao ~]# fg                           //将第一个(带+好的)命令调回前台

sleep 100

 

[root@wangchao ~]# sleep 100

Ctrl+Z

 [1]+ Stopped                 sleep 100

[root@wangchao ~]# sleep 200

Ctrl+Z

 [2]+ Stopped                 sleep 200

[root@wangchao ~]# jobs

[1]- Stopped                 sleep 100

[2]+ Stopped                 sleep 200

[root@wangchao ~]# fg 2                  //调回2的任务

sleep 200

[root@wangchao ~]# bg                 //将任务调到后台运行

[1]+ sleep 100 &

[root@wangchao ~]# jobs               //后台的命令

 

 

shell变量

[root@wangchao ~]# env        //看系统变量

[root@wangchao ~]# echo $HOSTNAME       //显示变量值,变量前加$

wangchao

[root@wangchao ~]# set        

//显示系统环境变量(比env输出多,含自定义,额外变量等)

[root@wangchao ~]# a=1           //设置a=1,set能看到,而env看不到

[root@wangchao ~]# set

[root@wangchao ~]# env

 

[root@wangchao ~]# a=1;b=2          //自定义变量

[root@wangchao ~]# echo $a $b

1 2

 

[root@wangchao ~]# b='ls /tmp/'          //当变量为特殊字符时,需''引起

[root@wangchao ~]# echo $b

ls /tmp/

 

[root@wangchao ~]# which vim

/usr/bin/vim

 

[root@wangchao ~]# which vim

/usr/bin/vim

[root@wangchao ~]# myvim=`which vim`       

//使myvim=which vim的执行结果,需加反引号引起,非单引号

[root@wangchao ~]# echo $myvim

/usr/bin/vim

 

[root@wangchao ~]# echo $a              

1

[root@wangchao ~]# c="$a"12               //两个变量叠加英文内容

[root@wangchao ~]# echo $c

112

[root@wangchao ~]# echo $a

1

[root@wangchao ~]# echo $myvim

/usr/bin/vim

[root@wangchao ~]# d="myvim"3          //两个变量结合

[root@wangchao ~]# echo $d

myvim3

[root@wangchao ~]# d="myvim"$a       //加两个变量

[root@wangchao ~]# echo $d

myvim1

 

[root@wangchao ~]# bash               //进入子bash

[root@wangchao ~]# echo $d             //之前定义的变量都已失效了

 

[root@wangchao ~]# export a=1       //使a成为全局变量

[root@wangchao ~]# echo $a

1

要使其变量在其他用户端也生效,需加入配置文件

 

[root@wangchao ~]# unset a       //取消变量设置

 

 

 

 

系统和用户的环境变量配置文件

[root@wangchao ~]# ls /etc/profile

/etc/profile

[root@wangchao ~]# vim /etc/profile

 

[root@wangchao ~]# vim/etc/profile.d/path.sh  //自定义shell,建议写在该目录下

exportPATH=$PATH:/usr/local/mysql/bin:/usr/local/apache2/bin

 

[root@wangchao ~]# source /etc/profile           

 //使配置生效,该文件会使profile.d下的文件都执行一遍

[root@wangchao ~]# echo $PATH

/usr/local/mysql/bin:/usr/local/apache2/bin已加入

该环境变量下每个用户都有效

 

 [root@wangchao~]# vim /etc/bashrc          //系统对应的环境变量

[root@wangchao ~]# echo $PS1               //显示的为[root@wangchao ~]格式

[\u@\h \W]\$

\u 用户, \h 主机名, \W 当前目录,\$ 就是 #,普通用户为 $

 

[root@wangchao ~]# cd /etc/init.d/

[root@wangchao init.d]#

 

[root@wangchao init.d]# PS1='[\u@\h \w]\$'            //显示全路径

[root@wangchao /etc/init.d]#

root@wangchao /etc/init.d]#PS1='[\u@\h\W]\$'         //改回

 

[root@wangchao init.d]#vim/etc/profile.d/umask.sh

umask 0012

[root@wangchao init.d]#source /etc/profile

[root@wangchao init.d]#umask

0012

[root@wangchao profile.d]#cd

[root@wangchao ~]#ls -al

-rw-------. 1 root root 19257 Jun 13 08:11 .bash_history            //保存的历史命令

-rw-r--r--. 1 root root    18 May 20  2009 .bash_logout           //为退出后执行的命令

-rw-r--r--. 1 root root   176 May 20  2009 .bash_profile       //可针对用户定义变量

-rw-r--r--. 1 root root   176 Sep 23  2004 .bashrc          //定义用户别名

 

 

 

shell中特殊符号

*通配符、 ?匹配一位 #注释而失效   \脱义符   

| 管道符一条命令的结果给另一条命令

 

[root@wangchao ~]#ls #1.txt              //执行了ls 1.txt#符注释了

[root@wangchao ~]#ls \#1.txt              //#脱义,查看#1.txt文件

[root@wangchao ~]#cat 1.txt |wc -l

2

 

$变量前缀,使用变量、   !$上一条命令最后一个参数、 

 ;用于两个命令中间,将两命令写在一行、   ~家目录、      &把一命令丢到后台

[root@wangchao ~]#sleep 10&

[1] 21300

 

>重定向、    >>追加重定向   2>错误重定向  2>>错误追加重定向  <反向重定向

[root@wangchao ~]#wc -l <1.txt

2

 

[] :[0-9]任意数字0-9

 

[root@wangchao ~]#ls [12].txt           //等于ls 1.txt+ls 2.txt

1.txt

 

 

 

 

 

 

 

 

 

 

 

 

 

cut命令

[root@wangchao ~]#cat /etc/passwd

[root@wangchao ~]#cut -d: -f 3 /etc/passwd    

//passwd文件,每行已:为分割符,取第三段的值

 

[root@wangchao ~]#cut -d: -f 3,4,5/etc/passwd

//passwd文件,每行已:为分割符,取第3,4,5段的值

 

[root@wangchao ~]#cut -c 10 /etc/passwd   //取文件每行第10个字符

[root@wangchao ~]#cut -c 1-10 /etc/passwd   //取文件每行第1-10个字符

 

sort命令    排序

[root@wangchao ~]#sort /etc/passwd         //排序(已ASISS大小码排序)

 

[root@wangchao ~]#sort -t: -k3 /etc/passwd    //已:为分割,将第三段排序

[root@wangchao ~]#sort -t: -k3 -n/etc/passwd    //已:为分割,将第三段按数字大小排序

[root@wangchao ~]#sort -t: -k3,5 -n/etc/passwd   //已:为分割,将第3-5段按数字大小排序

[root@wangchao ~]#sort -t: -k3,5 -n -r/etc/passwd 

//已:为分割,将第3-5段按数字大小反排序(大的排上)

[root@wangchao ~]#sort -t: -k3,5 -n -r -u/etc/passwd

//已:为分割,将第3-5段按数字大小反排序取消重复项

 

 

 

 

wc命令

[root@wangchao ~]#wc -l 1.txt 2.txt       //统计行数

[root@wangchao ~]#wc -w 1.txt          //统计单词数

[root@wangchao ~]#wc -m 1.txt         //统计字符数

 

 

uniqtee命令

uniq可用与去重复,亦可用于统计多少行重复

[root@wangchao ~]#uniq 1.txt         //(消除挨着的重复项)

[root@wangchao ~]#uniq -c 1.txt        //统计重复个数

 

在使用uniq时,重复项如果不挨着会认为不是重复项,因此在用uniq前可先排序

[root@wangchao ~]#sort 1.txt |uniq -c

 

[root@wangchao ~]#sort 1.txt |uniq      //效果一样

[root@wangchao ~]#sort -u 1.txt

 

 

 

tee用于重定向,双重输出

[root@wangchao ~]#echo"111">1.txt        //111重定向给1.txt,屏幕不显示

[root@wangchao ~]#cat 1.txt

111

[root@wangchao ~]#echo "1111"|tee1.txt      //111重定向给1.txt,屏幕上显示

1111

 

 

 

trsplit

[root@wangchao ~]#ls *.txt

1.txt

[root@wangchao ~]#ls *.txt|tr 'a-z' 'A-Z'        //将小写字母改成大写

1.TXT

[root@wangchao ~]#echo "ldfeddg"|tr 'd' 'S'    //d改成S显示

lSfeSSg

 

[root@wangchao ~]#split -b 50m 1.txt    //1.txt50m为大小分割

[root@wangchao ~]#split -l 100 1.txt     //1.txt100行为分割分割文件

[root@wangchao ~]#split -l 10anaconda-ks.cfg

[root@wangchao ~]#ls                  

xaa    xad  xag  xac  xaf   xab    xae

[root@wangchao ~]#wc -l x*              //文件被已每个10行分割

  10xaa

  10xab

  10xac

  10xad

  10xae

  10xaf

   4xag

 

[root@wangchao ~]#du -sb anaconda-ks.cfg

1392   anaconda-ks.cfg

[root@wangchao ~]#split -b 100 anaconda-ks.cfg

[root@wangchao ~]#ls -lh xa*

-rw-rw-r--. 1 root root 100 Jun 13 10:15xaa

-rw-rw-r--. 1 root root 100 Jun 13 10:15xab

-rw-rw-r--. 1 root root 100 Jun 13 10:15xac

-rw-rw-r--. 1 root root 100 Jun 13 10:15xad

-rw-rw-r--. 1 root root 100 Jun 13 10:15xae

-rw-rw-r--. 1 root root 100 Jun 13 10:15xaf

-rw-rw-r--. 1 root root 100 Jun 13 10:15xag

-rw-rw-r--. 1 root root 100 Jun 13 10:15xah

-rw-rw-r--. 1 root root 100 Jun 13 10:15xai

-rw-rw-r--. 1 root root 100 Jun 13 10:15xaj

-rw-rw-r--. 1 root root 100 Jun 13 10:15xak

-rw-rw-r--. 1 root root 100 Jun 13 10:15xal

-rw-rw-r--. 1 root root 100 Jun 13 10:15xam

-rw-rw-r--. 1 root root  92 Jun 13 10:15 xan

 

//每个文件大小分成100

 

[root@wangchao ~]#split -b 100anaconda-ks.cfg new_

new_ad new_aj  new_ae  new_ak new_af  new_al new_ag  new_am

//分割后已new_命名

 

 

 

shell中连接符(并且和或者)

&&并且 ||或者

 

[root@wangchao ~]#ls 1.txt&&ls2.txt

1.txt

2.txt

[root@wangchao ~]#ls 10.txt&&ls2.txt

ls: cannot access 10.txt: No such file ordirectory

[root@wangchao ~]#ls 1.txt&&ls 20.txt

1.txt

ls: cannot access 20.txt: No such file ordirectory

&&前面的命令执行成功才能执行后面的命令

   前面的命令执行不成功,后面的命令不能执行

 

[root@wangchao ~]#ls 1.txt||ls 20.txt

1.txt

[root@wangchao ~]#ls 10.txt||ls 2.txt

ls: cannot access 10.txt: No such file ordirectory

2.txt

||前面的命令未执行成功,执行后面的命令

 

 

&&:左边的命令执行成功后,才会执行后面的命令

||:左边的命令未执行成功,执行后面的命令

;:左边的命令执行成功与否,后面的命令都会执行

 

 

 

 

 

grep过滤

[root@wangchao ~]#grep 'root' /etc/passwd     //匹配root的行

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

 

[root@wangchao ~]#cp /etc/passwd 1.txt    

[root@wangchao ~]#grep --color 'root'/etc/passwd      //匹配的关键字用颜色匹配出

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

 

[root@wangchao ~]#grep --color -n 'root'/etc/passwd      //显示第几行匹配上

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

 

为方便,grep --colorcg代替

[root@wangchao ~]#alias cg='grep --color'

[root@wangchao ~]#cg -c 'root' 1.txt          //root出现了几行

2

 

[root@wangchao ~]#cg -v 'root' 1.txt           //-v取反,显示未出现root的行

 

[root@wangchao ~]#cg -A 2 'root' 1.txt        //显示匹配root的行,其下两行也显示出

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/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

 

[root@wangchao ~]#cg -n -A 2 'root' 1.txt         //-n前面显示行数

1:root:x:0:0:root:/root:/bin/bash

2-bin:x:1:1:bin:/bin:/sbin/nologin

3-daemon:x:2:2:daemon:/sbin:/sbin/nologin

--

11:operator:x:11:0:operator:/root:/sbin/nologin

12-games:x:12:100:games:/usr/games:/sbin/nologin

13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

 

[root@wangchao ~]#cg -n -B 2 'root' 1.txt   //匹配行,其上两行也显示出

 

[root@wangchao ~]#cg -n -C 2 'root' 1.txt  //匹配root行,其上下两行都显示出

 

 

[root@wangchao ~]#cg -r 'iptables' /etc/*      //匹配含iptables的文件(显示文件名)

[root@wangchao ~]#cg -rh 'iptables' /etc/*    

//匹配含iptables的文件(只显示结果,不显示文件名)

 

 

 

 

[root@wangchao ~]#grep -n 'tom' 1.txt

34:tom:x:500:500::/home/tom:/bin/bash

[root@wangchao ~]#cg -n 'tom' 1.txt

34:tom:x:500:500::/home/tom:/bin/bash

 

[root@wangchao ~]#cg -v 'nologin' 1.txt

root:x:0:0:root:/root:/bin/bash

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

tom:x:500:500::/home/tom:/bin/bash

 

[root@wangchao ~]#cg '[0-9]' 1.txt

[root@wangchao ~]#cg '[aN]' 1.txt

 

[root@wangchao ~]#cg '^[0-9]' 1.txt           //以数字开头的行

[root@wangchao ~]#cg '[^0-9]' 1.txt           //包含非数字的行

[root@wangchao ~]#cg '^[^0-9]' 1.txt          //不以数字开头的行

[root@wangchao ~]#cg '^$' 1.txt             //空行

[root@wangchao ~]#cg -v '^$' 1.txt           //非空行

 

[root@wangchao ~]#cg 'r.o' 1.txt             //匹配r.o  .为任一字符的行

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

 

[root@wangchao ~]#cg 'r*o' 1.txt        //*为任意个字符,任意多个*前面的字符

[root@wangchao ~]#cg 'r.*o' 1.txt        

//r开头o结尾的字符,.为任一个字符,*任意个*前面的字符

[root@wangchao ~]#cg 'r\?o' 1.txt      //\为脱义,01个?号前面的字符

[root@wangchao ~]#cg -E 'r?o' 1.txt     //效果与上一条命令一样

 

grep -E=egrep

 

 

 

 

 

grep -E=egrep

grep --color 'r\?o' 1.txt ==egrep --color'r?o' 1.txt

 

[root@wangchao ~]#egrep --color 'r+o' 1.txt        //1个或多个+前面的字符

[root@wangchao ~]#grep -E 'r+o' 1.txt

[root@wangchao ~]#cg 'r\+o' 1.txt

//以上三条命令效果相同

 

.:任意一个字符 *0个或多个*前面的字符    .*:任意个任意字符

?:0个或一个?前面的字符        +1个或多个+前面的字符

 

[root@wangchao ~]#egrep --color'root|nologin' 1.txt    //匹配root或者nologin

 

[root@wangchao ~]#grep --color 'root' 1.txt| grep --color 'nologin'

operator:x:11:0:operator:/root:/sbin/nologin

//并且匹配两次,即匹配root,又匹配nologin

 

root@wangchao ~]#egrep --color '(rr)+'1.txt

 

[root@wangchao ~]#egrep -E --color'(rr){1,3}' 1.txt    //出现1-3rr

[root@wangchao ~]#grep --color '\(rr\)\{1,3\}'1.txt    //效果与上一条相同

 

 

 

 

 

 

 

 

sed命令

[root@wangchao ~]#sed -n '10'P 1.txt            //P打印,打印第10

[root@wangchao ~]#sed -n '1,10'P 1.txt           //打印第1-10

[root@wangchao ~]#sed -n '30,$'P 1.txt          //打印第30行至尾行

[root@wangchao ~]#sed -n '/root/'p 1.txt        //打印匹配/root/的行

[root@wangchao ~]#sed -n '/r.o/'P 1.txt   

[root@wangchao ~]#sed -n '/r*o/'P 1.txt        //O的行

[root@wangchao ~]#sed -n '/r\?o/'P 1.txt

[root@wangchao ~]#sed -n '/r\+o/'P 1.txt                 //1个或多个r.....o

[root@wangchao ~]#sed -n '/root\|nologin/'P1.txt         //rootnologin

[root@wangchao ~]#sed -n '/\(oo\)\+/'p1.txt            //1对或多对oo

[root@wangchao ~]#sed -r -n '/(rr)+/'p1.txt

grep可以用的sed都可以用,sed -rgrep -E类似

[root@wangchao ~]#sed -n -r '/[^0-9]/'p1.txt

 

sedgrep多的功能

[root@wangchao ~]#sed '/[0-9]/'d 1.txt    //删除数字的行

[root@wangchao ~]#sed '1,19'd 1.txt     //删除1-19行,只是显示上删除了,原文件未删除

 

[root@wangchao ~]#cp 1.txt 2.txt

[root@wangchao ~]#sed -i '1,19'd 1.txt    //-i使文件1-19行删除

 

[root@wangchao ~]#sed'1,10s/nologin/login/g' 1.txt

//1-10行的nologin,替换成login

[root@wangchao ~]#cat 1.txt              //原文件未改变

 

-i可对文件进行更改

 

 

[root@wangchao ~]#sed'1,10s/\/sbin\/nologin/login/g' 1.txt

[root@wangchao ~]#sed's#/sbin/nologin#login#g' 1.txt

//s全局更改,用#代替/号,不用脱义

[root@wangchao ~]#sed 's#^.*$#login#g' 1.txt        //所有行都改成login

[root@wangchao ~]#sed 's#^.*$#&login#g'1.txt      //所有尾行加login

root@wangchao ~]#sed 's#[0-9]##g' 1.txt            //将数字用空代替(删除数字)

[root@wangchao ~]#sed 's#[a-zA-Z]##g' 1.txt        //删除字母

[root@wangchao ~]#sed 's#[^1-9a-zA-Z]##g' 1.txt    //删除特殊字符

[root@wangchao ~]#sed -r's#(^[a-z]+)(:.*:)(.*$)#\3\2\1#g' 1.txt  //将第一段与最后一段对调

 

 

 

[root@wangchao ~]#sed -n '/root/p;/tom/p'1.txt    

//包含/root/tom的行(如果一行中既含root又含tom,将显示两次)

[root@wangchao ~]#sed -n -e '/user/p' -e'/tom/p' 1.txt    //与上一条命令类似

 

[root@wangchao ~]#sed -n -r '/user|tom/p'1.txt

//一行中既含user的又含tom的只显示一次

 

 

 

 

 

 

 

awk命令

[root@wangchao ~]# cp /etc/passwd 1.txt

[root@wangchao ~]# awk -F ':' '{print $3}'1.txt               //以:为分割,打印第三段

[root@wangchao ~]# awk -F ':' '{print$3,$4}' 1.txt            //以:为分割,打印第34

[root@wangchao ~]# awk -F ':''OFS=":" {print$3,$4}'  1.txt    //显示出:分割符

 

[root@wangchao ~]# awk '/user/' 1.txt                

[root@wangchao ~]# awk '/user|root/' 1.txt              //显示rootuser的行

[root@wangchao ~]# awk '/r*o/' 1.txt                   //匹配0o或多个r…o的行

[root@wangchao ~]# awk '/r+o/' 1.txt

[root@wangchao ~]# awk '/r.*o/' 1.txt

[root@wangchao ~]# awk '/(oo)+/' 1.txt

 

 

[root@wangchao ~]# awk -F ':' '$1~/r*o/{print $3}' 1.txt    //打印匹配出的第三段

[root@wangchao ~]# awk -F ':' '$1~/r*o/{print $1,$3};$1~/user/ {print $1,$3}' 1.txt   

 //用了两条命令

[root@wangchao ~]# awk -F ':' '$1~/r*o/{print $1,$3};$1~/nobody/ {print $1,$3}' 1.txt

//同时满足两个条件的会答应两次

[root@wangchao ~]# awk -F ':' '$1~/r*o|nobody/{print$1,$3}' 1.txt

//r*onobody的显示一次

 

 

 

[root@wangchao ~]# awk -F ':''$3="root"' 1.txt            //显示root的行

[root@wangchao ~]# awk -F ':''$1=="nobody"||$7~/nolog/' 1.txt  

//1段位nobodynolog的行

 

 

[root@wangchao ~]# awk -F ':''$3>="500"' 1.txt      //ASCII码大小排,大于500的行

 

[root@wangchao ~]# awk -F ':''$7!=/sbin/login' 1.txt

[root@wangchao ~]# awk -F ':' '$7!~/login/'1.txt           //第七段不匹配nolog

[root@wangchao ~]# awk -F ':' '$3<$4'1.txt               //第三段小于第四段的

 

 

 

[root@wangchao ~]# awk -F ':''OFS=":";$3=$4'  1.txt    

//以:为分割,第三段=第四段的值

 

 

 

 

 

 

[root@wangchao ~]# awk -F ':' 'NR<10'1.txt      //打印前10

[root@wangchao ~]# awk -F ':' 'NR==10'1.txt      //打印第10

 

[root@wangchao~]# awk -F ':' 'NR==10 {print$1,$5}' 1.txt  //打印第十行第15

[root@wangchao~]# awk -F ':' '{if(NR==10) print $1,$7'} 1.txt   //打印第10行第17

 

[root@wangchao~]# awk -F ':' '{print NF}' 1.txt    //以:为分割,显示每行分成几段

root@wangchao ~]# awk -F ':' '{print$NR,$NF}' 1.txt   //打印第n行的n

[root@wangchao ~]# awk -F ':' '$7=$3+$4'1.txt      

//7段为34段相加(默认段有改变后打印,默认以空格为分割符)

 

[root@wangchao ~]# awk -F ':''OFS=":";$7=$3+$4' 1.txt    //以:为分割,显示了两遍

[root@wangchao ~]# awk -F ':''OFS=":" {$7=$3+$4;print $0}' 1.txt   

//以:为分割并且赋值用{}括起来

 

[root@wangchao ~]# awk -F ':''{(sum=sum+$3)};END{print sum}' 1.txt  //第三段相加

 

你可能感兴趣的:(shell基础)