sed及awk简单使用

sed简单使用

1.删除第一行内容。  sed    '1d'    file.txt

2.删除第1,2行内容。  sed '1,2d' file.txt

3.将1,7行内容中含有redhat的单词替换为suse。 sed '1,7s/redhat/suse/'  file.txt

4.在file.txt文件中的第7行下添加oracle单词      sed  "7aoracle"  file.txt

5 在file.txt文件中的第7行上添加oracle单词      sed  "7ioracle"   file.txt

6 在file.txt文件中的第7行替换为oracle单词      sed  "7coracle"  file.txt

在sed中嵌入正则相关内容

7 在file.txt文件中删除含有字符串mysql的行     sed  "/mysql/d"  file.txt

8 在file.txt文件中删除以字符串mysql为起始的行 sed "/^mysql/d" file.txt

9 在file.txt文件中打印以字符串$mysql为起始的行 sed  -n "/\$mysql/p" file.txt

10 在file.txt文件中删除空行及含空格的空行  sed  -e  "/^$/d/"   -e  "/^ *$/d"  file.txt

11 删除最后一行   sed "$d" file.txt

12 删除含redhat和Redhat的行        sed  "/[rR]edhat/d" file.txt

13 删除^A-Z的开头的evin的行        sed "/^[A-Z]evin/d" fikle.txt

14 保存查找串以便在替换串中使用&     sed "/kevin/&zou " file.txt

15 删除连续的字符        sed   "/go\{2\}gle/d"   file.txt  (删除含google的行)

                                         sed "/go\{2,\}gle/d"  file.txt  (删除含gooooal的行)

                                         sed  "/go\{2,3\}gle/d"  (删除含google的行和gooogle的行)

 

awk简单使用

1. key=":"

     awk   -F$key   '{print $1}'   /etc/passwd  输出每一行的第一列。

2.  awk  '{sum+=1};END{print sum}'   /etc/passwd  输出文件中的行数。

3.  awk   "BEGIN {sum=10};{sum+=1};END{priint sum} "  /etc/hosts   使用BEGIN定义变量。

4.  awk -F: '{ if  ($3<100) {print $1} }'  /etc/passwd

5.awk   'END {print ARGC}'  /etc/passwd /etc/hosts  输出命令行中参数的个数。

6.awk   'END {print Filename}'  /etc/passwd  输出命令行中参数的个数。

7.awk 'END {print FNR}'  /etc/hosts /etc/passwd  最后一个文件的行数。

8.awk 'END {print NR }' /etc/hosts /etc/passwd 全部输入文件的行数。

9.awk 'BEGIN {FS=L};{print $2} '  /etc/hosts  间隔符为L

10.awk '{ if ($3==0) {system ("id $1")}' } ' /etc/passwd

11.awk -F: '{while (NF>1)   {print $NF ":" NF-- };{print $1} }'  /etc/passwd  倒序排列