首页 » 编程开发 » Linux » 正文

Aix系统下sed的用法与实例——查询/打印/替换字符串并生成文件/删除

sedAix中非常重要的文本流编辑器,它对输入的文本进行查询/打印/替换/删除等操作,并将结果写到标准输出。sed 命令包含很多功能,用于选择要修改的行,并只对选择的行作更改。

首先,使用sed命令请记住:sed命令以行为单位对文本进行处理,处理完当前行,接着下一行文本输入进行处理,依次循环。

其次,使用sed命令请记住:sed命令不会对原文件进行操作,它是对原文件的拷贝文件进行操作。

打印指定行

1)打印首行

sed -n ‘1p’  test.txt

##如果想把结果输出到文件,则这样:sed -n ‘1p’  test.txt  > result.txt,以下同理。

2)打印最后一行

sed -n ‘$p’  test.txt        #$代表最后一行

3)打印第一行到第五行

sed -n ‘1,5p’  test.txt

打印满足条件的筛选行

1)打印存在“hello”这个单词的行

sed -n ‘/hello/p’ test.txt

2)打印满足正则表达式:出现以ing结尾单词的行

sed -n ‘/.*ing/p’  test.txt

替换字符串并重新生成文件

1)将文本中存在的单词“hello”替换成“world”

sed  ‘s/hello/world/g’ test.txt

##注意,aix系统中sed命令不支持-i参数,直接使用上面的命令就可以进行替换,如果要输出生成新文件,则sed  ‘s/hello/world/g’ test.txt  > newfile.txt就可以了。
如果不想用sed命令,其他命令也是可以实现的,比如:perl  -p -i -e  “s/hello/world/g”  test.txt,同样也可以实现字符串的替换,不过perl命令会直接修改原文件,请谨记。
2)如果要批量替换路径下所有文件

sed “s/查找字段/替换字段/g” `grep 查找字段 -rl 路径`

例如:替换/home下所有文件中的字符串“hello”为“world”

sed  “s/hello/world/g”  `grep hello -rl /home`

注意,此命令会直接修改原文件。

发表评论