分类: 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命令,打印5到56行。
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