作者 主題: sed 如何將一行文字取代成兩行  (閱讀 8223 次)

0 會員 與 1 訪客 正在閱讀本文。

jjchiou

  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 於: 2006-05-26 17:08 »
你好
我想將某一個設定檔特定地方加一行(變成兩行)

<severity>Major</severity>

變成<severity>Major</severity>
<autoaction>/opt/OpenNMS/bin/major.sh<autoaction>

我的script如下

[root@opennms etc]# vi replaceseverity.sh

#/usr/bin/bash
MAJOR="<severity>Major</severity>"
ACTION=`cat /root/major`

echo $ACTION
echo $MAJOR
sed 's/${MAJOR}/${ACTION}/[g]' < /opt/OpenNMS/etc/eventconf.xml

[root@opennms etc]# cat /root/major
<severity>Major</severity>
<autoaction>/opt/OpenNMS/bin/major.sh<autoaction>

[root@opennms etc]# ./replaceseverity.sh
sed: -e expression #1, char 22: unknown option to `s'


請問那裡錯了謝謝

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: sed 如何將一行文字取代成兩行
« 回覆 #1 於: 2006-05-26 17:17 »
引述: "jjchiou"
sed: -e expression #1, char 22: unknown option to `s'
請問那裡錯了謝謝



sed 's/${MAJOR}/${ACTION}/g' < /opt/OpenNMS/etc/eventconf.xml

如果改成這樣呢~~

jjchiou

  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #2 於: 2006-05-26 17:41 »
不會出現錯誤但是也沒有加上去

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #3 於: 2006-05-26 23:35 »
sed 可以直接附加一行,
找找男人應該會告訴你,
關於/a的使用。

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #4 於: 2006-05-30 14:25 »
代碼: [選擇]
sed '/Major/a\<autoaction>/opt/OpenNMS/bin/major.sh<autoaction>' filename

jjchiou

  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #5 於: 2006-06-01 10:08 »
謝謝但是還是沒有啊

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #6 於: 2006-06-01 10:16 »
說說您是怎麼操作使用的?

我直接在console下指令,
確定是可以的。

jjchiou

  • 懷疑的國中生
  • **
  • 文章數: 68
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #7 於: 2006-06-05 14:10 »
謝了我也是在console執行但是有輸出但是檔案都沒有改到
我也覺得很奇怪我再試試

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
sed 如何將一行文字取代成兩行
« 回覆 #8 於: 2006-06-05 14:19 »
本來以為是特殊字元的緣故,
不過剛剛試了一下,
放在shell script中也是OK的。

您可以自己再試試喔!

或許你應該研究一下,
輸出與輸入的相對關係?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
sed 如何將一行文字取代成兩行
« 回覆 #9 於: 2006-06-05 14:49 »
不知道這樣行不行?
sed -i "s:${MAJOR}:&\n${ACTION}:"  /opt/OpenNMS/etc/eventconf.xml