LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 805|回复: 5

如何对文本的控制 ?

[复制链接]
发表于 2004-8-28 17:13:37 | 显示全部楼层 |阅读模式
1: 如何写一个记录一个用户对一个文本里面内容修改的日志 ?

2: 怎么才能用脚本自己去修改文本里的内容 ? 给个方法我好吗 ?

比如我想将/etc/inittab里18行

id:5:initdefault:

修改成id:3:initdefault:
发表于 2004-8-28 18:57:42 | 显示全部楼层
1,不太清楚,或者再描述清楚点 ;)
2,用sed,awk,vim均可 ,如:

  1. awk 'NR==18{sub(/5/,"3")}{print}' /etc/inittab >tmp$$;mv /etc/inittab /etc/inittab.bak;mv tmp$$ /etc/inittab
复制代码
发表于 2004-8-28 21:13:32 | 显示全部楼层

  1. cat /etc/inittab | sed '18{s/5/3/}' > tmp$$; mv /etc/inittab /etc/inittab.bak; mv --force tmp$$ /etc/inittab
复制代码

# sed --version
super-sed version 3.61
based on GNU sed version 4.1

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
发表于 2004-8-28 23:22:07 | 显示全部楼层
最初由 5sky 发表

  1. cat /etc/inittab | sed '18{s/5/3/}' > tmp$$; mv /etc/inittab /etc/inittab.bak; mv --force tmp$$ /etc/inittab
复制代码

呵呵~,你的sed版本有些老呀 [php]
/home/lee#sed --version
GNU sed version 4.0.5
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
[/php]
 楼主| 发表于 2004-9-1 06:49:32 | 显示全部楼层
最初由 KornLee 发表
1,不太清楚,或者再描述清楚点 ;)
2,用sed,awk,vim均可 ,如:
  1. awk 'NR==18{sub(/5/,"3")}{print}' /etc/inittab >tmp$$;mv /etc/inittab /etc/inittab.bak;mv tmp$$ /etc/inittab
复制代码



比如有个用户aa,它运行了下面修改文本的命令

vi test.test

打开后,写入(修改或删除)testtesttesttesttesttest

保存

我作为root的话,如果知道aa用户对哪个文本进行了修改 ?

并且修改了什么内容 ?
发表于 2004-9-1 10:09:12 | 显示全部楼层
先备份,再比较,然后发送邮件,阅读邮件查看修改内容,
比如:
可以通过修改用户目录下的.bash_profile和.bash_logout实现
vi ~/.bash_profile
添加类似如下内容
  1. for file in `ls ~/docs/*.txt`
  2. do
  3. cp $file .$file~ 1>/dev/null 2>&1
  4. done
复制代码

vi ~/.bash_logout
添加类似如下内容:

  1. touch .diff
  2. for file in `ls ~/docs/*.txt`
  3. do
  4. echo "changes in $file" >>.diff
  5. diff .$file~ $file >>.diff >/dev/null 2>&1
  6. rm $file~ >/dev/null 2>&1
  7. done
  8. mail -s "changes" root < .diff && rm -rf .diff
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表