關於sed二三問 - Linux

By Kelly
at 2009-07-19T16:18
at 2009-07-19T16:18
Table of Contents
我想用 script + sed 把一個很長檔案的某一行(明確起見, 暫定為第65行)改掉
(總共要改個幾百次, 第一次改成a1, 第二次改成a2,...餘類推.)
假設loop variable叫做number.
我想用的sed指令是 sed -e "65 c\ a$number" filename>tmp ;
tmp>filename
但是這樣的話sed會回傳
Function 65 c\ a$number cannot be parsed.
後來發現, 要能成功使用c這個指令, 好像一定要先產生一個指令檔案 cfile:
65 c\
a$number
然後用 sed -f cfile filename才能成功.
Q1:
所有用c的sed指令, 真的都一定要先產生一個cfile嗎?
會這樣問, 主要是因為要在script裡on the fly產生cfile不是很容易.
Q2:
有沒有辦法讓sed直接去原檔案的第65行更改內容, 而不是把第65行改了存成新檔再
覆蓋原檔? (如果原檔很長, 這樣sed -e "65 c\ a$number">tmp; tmp>filename
還挺浪費系統資源的)
--
(總共要改個幾百次, 第一次改成a1, 第二次改成a2,...餘類推.)
假設loop variable叫做number.
我想用的sed指令是 sed -e "65 c\ a$number" filename>tmp ;
tmp>filename
但是這樣的話sed會回傳
Function 65 c\ a$number cannot be parsed.
後來發現, 要能成功使用c這個指令, 好像一定要先產生一個指令檔案 cfile:
65 c\
a$number
然後用 sed -f cfile filename才能成功.
Q1:
所有用c的sed指令, 真的都一定要先產生一個cfile嗎?
會這樣問, 主要是因為要在script裡on the fly產生cfile不是很容易.
Q2:
有沒有辦法讓sed直接去原檔案的第65行更改內容, 而不是把第65行改了存成新檔再
覆蓋原檔? (如果原檔很長, 這樣sed -e "65 c\ a$number">tmp; tmp>filename
還挺浪費系統資源的)
--
Tags:
Linux
All Comments

By Margaret
at 2009-07-22T04:07
at 2009-07-22T04:07
Related Posts
Linux 磁碟重整與否

By Linda
at 2009-07-19T13:22
at 2009-07-19T13:22
只是一個提案,想要請教可行度

By Dinah
at 2009-07-19T13:08
at 2009-07-19T13:08
只是一個提案,想要請教可行度

By Charlotte
at 2009-07-19T12:38
at 2009-07-19T12:38
一開機就啟動traffic shaping

By Frederica
at 2009-07-19T12:24
at 2009-07-19T12:24
vista x64 sp2到底能不能讀ext2?

By Callum
at 2009-07-19T11:49
at 2009-07-19T11:49