Discussion:
一個有關sed的script中以變數來宣告行數的問題
(时间太久无法回复)
aa
2004-10-19 15:55:16 UTC
Permalink
事情是這樣子的:

在使用sed的時候,如果直接使用數字的話,代表的是行數
例如如果有殺掉第十行到第二十行的話 sed -e '10,+10d' input_file > output_file
不過在宣告行數時一般使用的是數字,但是小弟現在想要在宣告行數時使用變數,
例如刪除第355行到第400行(用shell script的寫法)
#!/bin/bash

initial=355

cat input_file | sed -e '$initial,+45d' > outputfile
問題在這裡 ^^^^^^^^

因為$在sed的script中是有其他定義的,所以明顯的這樣一定不行,
如果使用/^$initial/的話,他也讀不到,例底要怎麼樣能用在sed的script中使用
變數來宣告行數?

小弟查了很久卻不得其解,也許是查的方向、方式不對,不知可否請各位知道先進
可以教導一下

謝謝各位
--
※ Origin: 臺大電機 Maxwell 站 ◆ From: 61-64-129-231-adsl-tpe.STATIC.so-net.ne
lloyd huang
2004-10-19 15:56:37 UTC
Permalink
Post by aa
#!/bin/bash
initial=355
cat input_file | sed -e '$initial,+45d' > outputfile
問題在這裡 ^^^^^^^^
試試看..

#!/bin/bash
initial=355
cat input_file | sed -e "$initial,+45d" > outputfile
--
    ◢◣
□□□ ██ □□□□
□  ◢█□ 造形.空間.秩序.
□  ███◣ 主從.對比.韻律
---
Posted via news://freenews.netfront.net
Complaints to ***@netfront.net
swyear
2004-10-19 16:42:30 UTC
Permalink
Post by aa
事情是這樣子的:
在使用sed的時候,如果直接使用數字的話,代表的是行數
例如如果有殺掉第十行到第二十行的話 sed -e '10,+10d' input_file > output_file
不過在宣告行數時一般使用的是數字,但是小弟現在想要在宣告行數時使用變數,
例如刪除第355行到第400行(用shell script的寫法)
#!/bin/bash
initial=355
cat input_file | sed -e ''$initial',+45d' > outputfile
改這樣
Post by aa
問題在這裡 ^^^^^^^^
因為$在sed的script中是有其他定義的,所以明顯的這樣一定不行,
如果使用/^$initial/的話,他也讀不到,例底要怎麼樣能用在sed的script中使用
變數來宣告行數?
小弟查了很久卻不得其解,也許是查的方向、方式不對,不知可否請各位知道先進
可以教導一下
謝謝各位
--
好康訊息!
Openfind 提供免費撥接電話:40508888
帳號:openfind 密碼:openfind
--
http://bbs.openfind.com.tw
※來源:218.170.*
新手來了
2004-10-21 03:17:10 UTC
Permalink
Post by swyear
Post by aa
事情是這樣子的:
在使用sed的時候,如果直接使用數字的話,代表的是行數
例如如果有殺掉第十行到第二十行的話 sed -e '10,+10d' input_file > output_file
不過在宣告行數時一般使用的是數字,但是小弟現在想要在宣告行數時使用變數,
例如刪除第355行到第400行(用shell script的寫法)
#!/bin/bash
initial=355
cat input_file | sed -e ''$initial',+45d' > outputfile
改這樣
Post by aa
問題在這裡 ^^^^^^^^
因為$在sed的script中是有其他定義的,所以明顯的這樣一定不行,
如果使用/^$initial/的話,他也讀不到,例底要怎麼樣能用在sed的script中使用
變數來宣告行數?
小弟查了很久卻不得其解,也許是查的方向、方式不對,不知可否請各位知道先進
可以教導一下
謝謝各位
嗯,這樣是讀不到的,sed認不出在script description ' '中的'是什麼意思…
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: pc61184.ccpcroom.ntnu.edu.tw
新手來了
2004-10-21 03:19:07 UTC
Permalink
Post by aa
Post by aa
#!/bin/bash
initial=355
cat input_file | sed -e '$initial,+45d' > outputfile
問題在這裡 ^^^^^^^^
試試看..
#!/bin/bash
initial=355
cat input_file | sed -e "$initial,+45d" > outputfile
謝謝你,這樣就可以了,不過可以告訴我在哪裡有說明使用-e ''和-e ""有什麼不同
嗎?因為我在網上找了很久找不到相關的語法,所以還勞煩指點一下
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: pc61184.ccpcroom.ntnu.edu.tw
Vampire at Wicked Empire
2004-10-21 03:40:17 UTC
Permalink
Post by 新手來了
謝謝你,這樣就可以了,不過可以告訴我在哪裡有說明使用-e ''和-e ""有什麼不同
嗎?因為我在網上找了很久找不到相關的語法,所以還勞煩指點一下
這是 sh 基本的 syntax,與 sed 無關。
"" 內才會 variable 取代, '' 內不會。
--
My projects:
http://www.csie.nctu.edu.tw/~cp76/gcin
http://fftv.sf.net
http://tcron.sf.net
http://www.csie.nctu.edu.tw/~cp76/gcb
新手來了
2004-10-21 10:35:12 UTC
Permalink
Post by Vampire at Wicked Empire
Post by 新手來了
謝謝你,這樣就可以了,不過可以告訴我在哪裡有說明使用-e ''和-e ""有什麼不同
嗎?因為我在網上找了很久找不到相關的語法,所以還勞煩指點一下
這是 sh 基本的 syntax,與 sed 無關。
"" 內才會 variable 取代, '' 內不會。
是的,小弟受教了,感恩
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: tangfu.chem.ntnu.edu.tw

Loading...