Board logo

标题: [问题求助] [已解决]sed语句怎么换行 [打印本页]

作者: syqh2010    时间: 2014-10-10 11:35     标题: [已解决]sed语句怎么换行

本帖最后由 syqh2010 于 2015-3-4 00:24 编辑

不知这样提问对不对啊。
如有一语句
  1. sed -r -e "1ibathome" -e "/^man/athank" -e "/^wei/abang8856" -e "/^xx|^non/d" -e "/^  gan/s/.*/gan555/" -e "/^xie/s/.*/xiexie/" -e "$averymuch" a.txt>b.txt
复制代码
我想分成一段一段的,这样好看,容易改,效果类似下面
  1. sed -r -e "1ibathome"
  2. -e "/^man/athank"
  3. -e "/^wei/abang8856"
  4. -e "/^xx|^non/d"
  5. -e "/^  gan/s/.*/gan555/"
  6. -e "/^xie/s/.*/xiexie/"
  7. -e "$averymuch"
  8. a.txt>b.txt
复制代码
请问怎样才能实现?谢谢!
作者: Linuxer    时间: 2014-10-10 12:07

回复 1# syqh2010


    需要写全命令
  1. sed -r -e "1ibathome" a.txt > b.txt
  2. sed -r -e "/^man/athank" a.txt >> b.txt
  3. sed -r -e "/^wei/abang8856" a.txt >> b.txt
  4. sed -r -e "/^xx|^non/d" a.txt >> b.txt
  5. sed -r -e "/^  gan/s/.*/gan555/" a.txt >> b.txt
  6. sed -r -e "/^xie/s/.*/xiexie/" a.txt >> b.txt
  7. sed -r -e "$averymuch" a.txt >> b.txt
复制代码

作者: DAIC    时间: 2014-10-10 12:38

回复 2# Linuxer
  1. @echo off
  2. sed -e "1ibathome" ^
  3.     -e "/^man/athank" ^
  4.     -e "/^wei/abang8856" ^
  5.     -e "/^xx|^non/d" ^
  6.     -e "/^  gan/s/.*/gan555/" ^
  7.     -e "/^xie/s/.*/xiexie/" ^
  8.     -e "$averymuch" ^
  9. a.txt > b.txt
复制代码

作者: syqh2010    时间: 2014-10-10 16:38

回复 3# DAIC
谢谢!
其它都可以,但有一句用不了
   -e "/^xx|^non/d" ^
原来能删的,现在删不了。
http://www.bathome.net/viewthread.php?tid=32361&highlight=
作者: DAIC    时间: 2014-10-10 17:07

回复 4# syqh2010


@echo off
sed -r -e "1ibathome" ^
    -e "/^man/athank" ^
    -e "/^wei/abang8856" ^
    -e "/^xx|^non/d" ^
    -e "/^  gan/s/.*/gan555/" ^
    -e "/^xie/s/.*/xiexie/" ^
    -e "$averymuch" ^
a.txt > b.txt
作者: syqh2010    时间: 2014-10-10 17:08

回复 3# DAIC
谢谢,可以了,要一个 -r
  1. @echo off
  2. sed -r -e "1ibathome" ^
  3.        -e "/^man/athank" ^
  4.        -e "/^wei/abang8856" ^
  5.        -e "/^xx|^non/d" ^
  6.        -e "/^  gan/s/.*/gan555/" ^
  7.        -e "/^xie/s/.*/xiexie/" ^
  8.        -e "$averymuch" ^
  9. a.txt > b.txt
复制代码

作者: CrLf    时间: 2014-10-12 21:47

在 SedScript.txt 中保存以下内容:
  1. 1ibathome
  2. /^man/athank
  3. /^wei/abang8856
  4. /^xx|^non/d
  5. /^  gan/s/.*/gan555/
  6. /^xie/s/.*/xiexie/
  7. $averymuch
复制代码
然后用 -f 选项来加载:
  1. sed -r -f SedScript.txt  a.txt>b.txt
复制代码

作者: CrLf    时间: 2014-10-12 21:51

另类一点的:
  1. @echo off
  2. (
  3. sed -i "1,/^:SedScript/s/^/#/" "%~0"
  4. sed -r -f SedScript.txt  a.txt>b.txt
  5. sed -i "1,/^#:SedScript/s/#//" "%~0"
  6. )
  7. pause & exit /b
  8. :SedScript
  9. 1ibathome
  10. /^man/athank
  11. /^wei/abang8856
  12. /^xx|^non/d
  13. /^  gan/s/.*/gan555/
  14. /^xie/s/.*/xiexie/
  15. $averymuch
复制代码

作者: syqh2010    时间: 2014-10-12 22:53

回复 8# CrLf

谢谢!受益无穷!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2