Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432205
  • 博文数量: 103
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 22:17
文章分类

全部博文(103)

文章存档

2013年(4)

2012年(99)

我的朋友

分类: LINUX

2013-01-15 16:12:29

原创:zorro

整理:bug->Grubby @ bug_team

感谢:bug->David 提供部分答案

sed

(1)编写一个sed命令,删除一个文件的每行中的第1个字符。

   sed 's/^.//g' /etc/passwd

 

(2)编写一个sed命令,删除一个文件的每行中的第2个字符。

   sed 's/\(^.\)\(.\)\(.*\)/\1\3/g' /etc/passwd

 

(3)编写一个sed命令,删除一个文件的每行中的最后一个字符。

   sed 's/.$//g' /etc/passwd

 

(4)编写一个sed命令,删除一个文件的每行中的倒数第二个字符。

   sed 's/\(.*\)\(.\)\(.$\)/\1\3/g' /etc/passwd

 

(5)编写一个sed命令,删除一个文件的每行中的第2个单词。

   sed 's/\(^[a-zA-Z0-9]*:\)\([a-zA-Z0-9]*\)\(:.*\)/\1\3/g' /etc/passwd

 

(6)编写一个sed命令,删除一个文件的每行中的倒数第2个单词。

   sed 's/\(.*\)\([0-9A-Za-z]\{1,\}\)\(:[0-9a-zA-Z]*$\)/\1\3/g'  /etc/passwd

 

(7)编写一个sed命令,删除一个文件的每行中的最后一个单词。

   sed 's/[a-zA-Z0-9]\{1,\}$//g' /etc/passwd

 

(8)编写一个sed命令,交换一个文件的每行中的第1个字符和第2个字符。

   sed 's/\(^.\)\(.\)\(.*$\)/\2\1\3/g' /etc/passwd

 

(9)编写一个sed命令,交换一个文件的每行中的第1个字符和最后一个字符。

   sed 's/\(.^\)\(.*\)\(.$\)/\3\2\1/g' /etc/passwd

 

(10)编写一个sed命令,交换一个文件的每行中的第1个和最后一个单词。

   sed 's/\([a-zA-Z0-9]\{1,\}:\)\(.*\)\([^a-zA-Z0-9][a-zA-Z0-9]\{1,\}$\)/\3\2\1/g' /etc/passwd

 

(11)编写一个sed命令,删除一个文件中所有的整数。

   sed 's/[0-9][0-9]*//g' /etc/passwd

 

(12)编写一个sed命令,删除每行开始处的所以前导空格。

   sed 's/^ *//g' /etc/passwd

 

(13)编写一个sed命令,用制表符替换每行开始处的所有单一空格。

   sed -e 's/^ /\t/g' /etc/passwd

 

(14)编写一个sed命令,把所有的大写字母用括号括起来。

   sed 's/[A-Z]/(&)/g' /etc/passwd

 

(15)编写一个sed命令,打印每行3次。

   sed -e '1~1p' -e '1~1p' /etc/passwd

 

(16)编写一个sed命令,隔行删除。

   sed '1~2d' /etc/passwd

 

(17)编写一个sed命令,把22行到33行复制到56行后面。

   sed -e '22h' -e '23,33H' -e '56G' /etc/passwd

 

(18)编写一个sed命令,把22行到33行移动到56行后面。

   sed -e '22h' -e '23,33H' -e '56G' -e '22,23d' /etc/passwd

 

(19)编写一个sed命令,抽取每行的第一个单词。

   sed 's/\(^[0-9A-Za-z]\{1,\}\)\(.*\)/\2/g'  /etc/passwd

 

(20)编写一个sed命令,打印一行中的第一个和第3个单词。

   head -l /etc/passwd |sed 's/\(^[a-zA-Z0-9]*\)\(:[a-z]\)\(:[a-zA-Z0-9]*\)\(.*\)/\1\3/g'

 

(21)编写一个sed命令,从形式为mm/dd/yy的日期中抽取月份;日期;年份。

   date +%D | sed '#/#;#'

 

 

 

 

awk:

NR 行号 NF 字段

(1)编写一个脚本打印所以输入行。

   awk -F: {print $0} /etc/passwd

 

(2)编写一个脚本打印第8行。

   awk -F: 'NR==8{print $0}' /etc/passwd

 

(3)编写一个awk命令,打印所有输入行的第一个字段值。

   awk -F: {print $1} /etc/passwd

 

(4)编写一个awk命令,打印输入行总数。

   awk 'END{print NR}' /etc/passwd

 

(5)编写一个awk命令,打印每行的字段数。

   awk -F: {print NF} /etc/passwd

 

(6)编写一个awk命令,打印最后一行和最后一个字段值。

   awk -F: 'END{print $NF}END{print $NR}' /etc/passwd

 

(7)编写一个awk命令,打印大于4个字段的所有输入行。

   awk -F: 'NF>4{print $0}' /etc/passwd

 

(8)编写一个awk命令,打印文件中的字段总数。

   awk -F: '{i+=NF}END{print i}' /etc/passwd

 

(9)编写一个awk命令,打印大于等于4个字段的的行的总数。

   awk -F: 'NF>=4{i++}END{print i}' /etc/passwd

 

(10)编写一个awk命令,如果其第1个字段大于9就打印第2个字段。

   awk -F: '$1>9{print $2}' /etc/passwd

 

(11)编写一个awk命令,打印所有行,字段顺序必须是字段4,字段3,字段2,字段1

   awk -F: '{print $4,$3,$2,$1}' /etc/passwd

 

(12)编写一个awk命令,打印556行。

   awk -F: 'NR>=5 && NR<=56 {print $0}' /etc/passwd

 

(13)编写一个awk命令,在文件顶部加上标题“uplooking

   awk 'BEGIN{print"uplooking"}{print $0}' /etc/passwd

 

(14)编写一个awk命令,隔行删除。

   awk 'NR%2==1{print $0}' /etc/passwd

 

(15)编写一个awk命令,抽取每一行的第一个单词。

   awk -F"[^0-9A-Za-z]" '{print $1}' /etc/passwd

 

(16)编写一个awk命令,打印每行的第1个和第3个单词。

   awk -F"[^0-9A-Za-z]" '{print $1,$3}' /etc/passwd

阅读(3951) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~