1,命令介绍
- sed:流编辑器
- s:在文本中查找替换;
- e:在文件中查找替换;
- f:查找替换命令存储在脚本中
2,实例说明
#!/bin/bash
#sed编译器指定的命令应用于STDDIN输入流,STDOUT输出流
#这就允许将数据直接管道传送给sed编译器处理
#s:查找替换; /old/new/:new替换old 但只替换各行中的首个字符
echo "This is a test" | sed 's/test/big test/'
echo "This is a test" | sed 's/test/big test/' 1> hello
#在文件hello中进行查找替换 -e:多条命令进行查找替换
#查找替换后输出到STDOUT;对hello文件不进行更改
cat hello
sed -e 's/test/normal/; s/big/samll/' hello
cat hello
#gawk:程序有'{}'定义 使用print命令:打印信息
#gawk:默认等待从STDIN输入 然后从从STDOUT输出 ctrl+D结束gawk程序
echo "This is a test" | gawk '{print "hello zzy"}'
echo "This is a test" | gawk '{print "hello pff"}' 1> hello
#gawk:$0:整行文本;$1:第一个数据段;$2:第二个数据段;$n:第n个数据段
#从data3读取输入,$1:取每行的第一个数据段
cat data3
echo "---------------------- \$0 ------------------"
gawk '{print $0}' data3
echo "---------------------- \$1 ------------------"
gawk '{print $1}' data3
echo "---------------------- \$4 ------------------"
gawk '{print $4}' data3
#-F:指定分隔符 指定‘:’为分隔符
#gawk -F: '{print $1}' /etc/passwd
#使用多个命令,把$4替换成“zzy”然后打印整个文本
echo "my name is dave" | gawk '{$4="zzy"; print $0}'
#BEGIN:强制执行脚本
gawk 'BEGIN {print "hello world"}'
echo "test is not a test" | sed 's/test/noraml/2' #数字:替换第二个test
echo "test is not a test" | sed 's/test/noraml/g' #g: 全部替换
#sed 's!/bin/bash!/bin/csh!' /etc/passwd #替换字符
cat data3
echo "-----------------替换第2行---------------------"
sed '{2s/is/are/}' data3 #第2行进行替换
echo "-----------------替换第2,3行-------------------"
sed '{2,3s/is/are/}' data3 #第2,3行替换
echo "-----------------替换第2,$行-------------------"
sed '{2,$s/is/are/}' data3 #第2,最后行替换
echo "-----------------查找替换----------------------"
sed '{/one/s/is/are/}' data3 #包含“one”的行进行替换
echo "-----------------多个命令使用------------------"
sed '2,${s/is/are/ ;s/the/The/}' data3 #使用多个命令
echo "-----------------删除所有行--------------------"
sed 'd' data3 #删除所有行
echo ""
echo "-----------------删除第3行---------------------"
sed '3d' data3 #删除第3行
echo "-----------------删除第2行到最后----------------"
sed '2,$d' data3 #删除第2行到最后
echo "-----------------所有行前插入-------------------"
sed 'i hello world' data3
echo "-----------------第3行前插入--------------------"
sed '3i hello world' data3
echo "-----------------更改第3行---------------------"
sed '3c hello world' data3
echo "hello world" | sed 'p' #打印命令
echo $?

被折叠的 条评论
为什么被折叠?



