免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2298 | 回复: 10
打印 上一主题 下一主题

关于文件修改的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-26 13:18 |只看该作者 |倒序浏览
文件如下:
10.238.70.19 shuguan172 1 161
10.238.70.190 shuguan172 1 161
10.238.70.129 shuguan172 1 161
10.238.70.130 shuguan172 1 161
10.238.70.131 shuguan172 1 161
10.238.70.132 shuguan172 1 161

我要如何用命令将文件改成:
#10.238.70.19 shuguan172 1 161
10.238.70.190 shuguan172 1 161
10.238.70.129 shuguan172 1 161
#10.238.70.130 shuguan172 1 161
10.238.70.131 shuguan172 1 161
10.238.70.132 shuguan172 1 161

用ip地址为条件,在符合条件的行前面加上#号

论坛徽章:
0
2 [报告]
发表于 2008-12-26 13:22 |只看该作者
sed 's/条件/#&/g' ufile

论坛徽章:
0
3 [报告]
发表于 2008-12-26 13:26 |只看该作者
for IP in $(cat ip.txt)
do
sed -i 's/$IP/#$ip/' doc.txt
done

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
4 [报告]
发表于 2008-12-26 13:28 |只看该作者
原帖由 xmbbx 于 2008-12-26 13:26 发表
for IP in $(cat ip.txt)
do
sed -i 's/$IP/#$ip/' doc.txt
done

$ip -> $IP 或者& :wink:

论坛徽章:
0
5 [报告]
发表于 2008-12-27 16:55 |只看该作者
root@v210-2 # more 1
10.238.70.19 shuguan172 1 161
10.238.70.190 shuguan172 1 161
10.238.70.129 shuguan172 1 161
10.238.70.130 shuguan172 1 161

root@v210-2 # more 2
10.238.70.19
10.238.70.130

我用下面的循环不起作用:
for IP in $(cat 2)
do
echo $IP
sed 's/$IP/#&/g' 1 > 3
done

写成这样就可以:
for IP in $(cat 2)
do
echo $IP
sed 's/10.238.70.130/#&/g' 1 > 3
done

$IP这样应用变量是不是不对啊?

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
6 [报告]
发表于 2008-12-27 17:02 |只看该作者
原帖由 spking 于 2008-12-27 16:55 发表
我用下面的循环不起作用:
for IP in $(cat 2)
do
echo $IP
sed 's/$IP/#&/g' 1 > 3
done

写成这样就可以:
for IP in $(cat 2)
do
echo $IP
sed 's/10.238.70.130/#&/g' 1 > 3
done

$IP这样应用变量是不是不对啊?

改成这样子
双引号sed "s/$IP/#&/g" 1 > 3
或sed 's/'$IP'/#&/g' 1 > 3

论坛徽章:
0
7 [报告]
发表于 2008-12-27 17:12 |只看该作者
# cat 1
10.238.70.19 shuguan172 1 161
10.238.70.190 shuguan172 1 161
10.238.70.129 shuguan172 1 161
10.238.70.130 shuguan172 1 161

# cat 2
10.238.70.19
10.238.70.130

for IP in $(cat 2)
do
echo $IP
sed 's/'$IP' /#&/g' 1 > 3
done

#cat 3
10.238.70.19 shuguan172 1 161
10.238.70.190 shuguan172 1 161
10.238.70.129 shuguan172 1 161
#10.238.70.130 shuguan172 1 161

为什么10.238.70.19前面没有加上#号?

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
8 [报告]
发表于 2008-12-27 17:26 |只看该作者
最后>覆盖了,用
sed -i 's/'$IP' /#&/g' 1

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
9 [报告]
发表于 2008-12-27 17:48 |只看该作者
  1. awk 'NR==FNR{a[$1]="#"$1}NR>FNR{if($1 in a)$1=a[$1];print}' 2 1 >3
复制代码

论坛徽章:
0
10 [报告]
发表于 2008-12-27 18:14 |只看该作者
原帖由 HH106 于 2008-12-27 17:26 发表
最后>覆盖了,用
sed -i 's/'$IP' /#&/g' 1


root@v210-2 # sed -i 's/10.238.70.19 /#&/g' 1
sed: illegal option -- i

不支持-i参数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP