linux下sed使用 100

有个txt文件叫test.txt,里面的内容如下10.213.134.1959ghdghd10.137.130.174fdghdgh10.136.9.813sdfgsfd... 有个txt文件叫test.txt,里面的内容如下
10.213.134.195 9ghdghd
10.137.130.174 fdghdgh
10.136.9.81 3sdfgsfdg
10.134.131.37 dsfgsfd
10.231.46.87 sdfgsfg
10.134.131.78 dsfgsdf
10.135.37.214 sdfgsf
怎样实现我提供ip地址,然后能够如果txt里有这个ip地址,则把对应的ip地址后面的字符替换成hahaha,如果里面没有ip地址,则新加一行提供的ip地址 并且跟上hahaha
展开
 我来答
匿名用户
2016-12-27
展开全部
  一、Sed简介   Sed:Stream Editor 流式编辑器 又称行编辑器,每次只编辑一行。Sed工作是在“模式空间”中进行的,并不操作源文件。对源文件无危害。   二、Sed使用格式   Sed命令的常用格式如下:   (1)Sed [options] ‘script’ input_file…   (2)Sed [options] –f script_file input_file…   (3)Sed [options] ‘ADDR1,ADDR2command’ input_file…   例如:#sed ’1,2d’ fstab 就可以将fstab的前两行删除并显示出来,但是它不会改变源文件。   #Sed ‘1,2!d’ fstab 表示删除除第一行和第二行之外的所有行。   (4)Sed [options] ‘/PATTERN/command’ input_file……   &:s/l..e/&er/:表示引用前面匹配到的所有字符。   例如:sed ‘/[[:upper:]]/d’ binary.sh 表示删除所有的大写字母的行。   (5)Sed ‘/PATTERN1/,/PATTERN2/command’ input_file……   说明:这表示从第一次被PATTERN1匹配到的行到第一次被PATTERN2匹配到的中间的所有行执行command命令。   三、Sed的常用选项:   -n:只显示sed匹配到的行。其余行不显示。下文有范例。   -i :可以直接操作原文件。默认情况下sed不会改变原文件,但是-i选项可以修改原文件,此选项应慎用。   -r:可以使用标准正则表达式。默认情况下sed只支持基本正则表达式,但是加上-r选项后则支持扩展正则表达式   -e:多脚本共用。可以同时执行多个命令。例如:   代码如下:   [root@localhost ~]# sed -e 's@@H1@g' -e 's@(l..e).@1r.@g' test   He love His lover.   She like Her liker.   Dove love Her liker.   也可以这样用,中间用分号隔开:   代码如下:   [root@localhost ~]# sed 's@@H1@g;s@(l..e).@1r.@g' test   四、使用示例   代码如下:   #sed -e 命令行处理 -a 新增   > sed -e '$ a widuu' test.txt #在test.txt的结尾处添加widuu   代码如下:   # 把-e换成-n   > sed -n '$ a widuu' test.txt # 只显示被处理的一行   代码如下:   # -c 替换多少行 为你制定的字符串,这里我的test.txt内容如图   > sed -e '2,5c xiaowei' test.txt #把2-5行替换成字符串xiaowei   代码如下:   # 多命令执行 -e   > sed -e '2,5c xiaowei' -e 's/cccc/widuu/' test.txt   代码如下:   # -i 不输出 -s 替换   >sed -i 's/111111/widuu/g' test.txt   代码如下:   # i 插入 自定义的字符串 在test.txt的第二行插入xiaowei   > sed -e '2i xiaowei' test.txt   代码如下:   # d 删除输入任何字符串   > sed -e '2d' test.txt #删除第二行
百度网友3e4758419
2016-12-27 · TA获得超过301个赞
知道小有建树答主
回答量:341
采纳率:33%
帮助的人:71.8万
展开全部
#!/bin/bash

cat test.txt |grep $1
if [ $? -eq 0 ]
then
cmd=`grep $1 test.txt | awk -F " " '{print $2}'`
sed -i "s/$1.*$cmd/$1 hahaha/g" test.txt
else
sed -i '$a '"$1"' hahaha' test.txt
fi
具体运行方法: ./sed.sh 10.134.131.78 (sed.sh 为脚本名称)

已经在本地测试验证通过了的。望采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式