+ -
当前位置:首页 → 问答吧 → sed修改文件的问题

sed修改文件的问题

时间:2011-03-09

来源:互联网

本帖最后由 howge 于 2011-03-09 12:40 编辑

eg:我现在要处理一个文件a.txt ,其中的格式是:
a adsadsd
b sdsdsds
c sdsssddffd

如果 a.txt 文件中,存在一行以“e”开头的行,则对a.txt 不做任何处理
反之,添加一行以“e” 开头的行,位置不定, e后面的内容固定

sed处理以后内同如下:
a adsadsd
b sdsdsds
c sdsssddffd
e sddsadd

ps:只需要处理一个文件,awk,grep 不考虑,谢谢各位先~

作者: howge   发布时间: 2011-03-09

e存在的话 会在哪行
添加的话 添加在最后一行吧

作者: ziyunfei   发布时间: 2011-03-09

回复 ziyunfei


    可以,在哪都没关系

作者: howge   发布时间: 2011-03-09

回复 howge


    grep ^e ufile|| sed -i '$a\ e adfdf' ufile

作者: wtuter   发布时间: 2011-03-09



QUOTE:
eg:我现在要处理一个文件a.txt ,其中的格式是:
a adsadsd
b sdsdsds
c sdsssddffd

如果 a.txt 文件 ...
howge 发表于 2011-03-09 12:01



if ! grep "^e " a.txt >> /dev/null ; then echo "e sddsadd" >> a.txt; fi

作者: jason680   发布时间: 2011-03-09

本帖最后由 blackold 于 2011-03-09 13:05 编辑

try:
  1. sed '/^e/h;${G;/\ne.*$/s///;t;s//\ne foo/}' urfile
复制代码

作者: blackold   发布时间: 2011-03-09

回复 blackold


    谢黑哥,为啥我一直想着label呢? 对sed不熟悉

作者: howge   发布时间: 2011-03-09

回复 howge


    想着label?

作者: blackold   发布时间: 2011-03-09

回复 blackold


    刚试了下,貌似不行啊

作者: howge   发布时间: 2011-03-09

自己顶一下~~!!

作者: howge   发布时间: 2011-03-09



QUOTE:
回复  blackold


    刚试了下,貌似不行啊
howge 发表于 2011-03-09 13:34


sed '/^e/h;${G;/\ne.*$/s///;t;s/\n/\ne foo/}'

作者: ziyunfei   发布时间: 2011-03-09

回复 ziyunfei


    貌似成功了

作者: howge   发布时间: 2011-03-09

本帖最后由 howge 于 2011-03-09 13:55 编辑

回复 ziyunfei


    反复测试了下,还是有问题
下载 (28.28 KB)
2011-03-09 13:55

作者: howge   发布时间: 2011-03-09

我也来个sed,呵呵

sed '/^[^e]/h;${/^e/b};$a e foo'

作者: yinyuemi   发布时间: 2011-03-09



QUOTE:
回复  ziyunfei


    反复测试了下,还是有问题
howge 发表于 2011-03-09 13:53


你改成^a能对吗

作者: ziyunfei   发布时间: 2011-03-09