在windows下使用sed取代雙引號之問題 - Linux

Michael avatar
By Michael
at 2012-10-08T16:30

Table of Contents

大家好
小弟有個c的 rename.h檔
系統是winxp sp3

內容可能是
#define _MYFILENAME_STR "text.exe"

我想把他做成批次檔的變數
也就是
set _MYFILENAME_STR=text.exe
放入.bat檔以後供後續指令指定檔名時可用



由於裡面可能有多個\t(tab) 與" "(空白)
所以我想到的方式是


grep FILENAME_STR rename.h > 1.tmp
-> 1.tmp 內容
---------------
#define MYFILENAME_STR "text.exe"
---------------

sed s/\t//g 1.tmp > 2.tmp
-> 2.tmp 內容
---------------
#define MYFILENAME_STR "text.exe"
---------------

sed s/" "//g 2.tmp > 3.tmp
-> 3.tmp 內容
---------------
#defineMYFILENAME_STR"text.exe"
---------------

sed s/#define/"set "/g 3.tmp > 4.tmp
-> 4.tmp 內容
---------------
set MYFILENAME_STR"text.exe"
---------------

sed s/_STR\"/_STR=/g 4.tmp > 5.tmp
-> 錯誤訊息如下
---------------
set MYFILENAME_STR=text.exe"
sed: can't read >: Invalid argument
sed: can't read 5.tmp: No such file or directory
---------------

sed s/\"//g 5.tmp>out.bat
-> 這步就沒做了

想請教一下這種狀況是什麼錯誤呢 感覺是雙引號的問題
但是我怎麼改都失敗

另外我想要不產生中間的tmp檔
改以使用| 該怎麼下指令給sed好呢
感謝

--
Tags: Linux

All Comments

Caroline avatar
By Caroline
at 2012-10-11T02:22
試試 grep "FILENAME_STR" 檔名.h | 加上下面那一行
awk '{print "set "$2"="$3}' | tr -d "\""
Valerie avatar
By Valerie
at 2012-10-12T04:27
可以耶 但是現在變成我要找怎麼把TR後的結果OUT到.BAT
檔 我再研究一下 感謝
Joe avatar
By Joe
at 2012-10-13T17:12
再加上> 檔名.bat 就可以
David avatar
By David
at 2012-10-15T08:54
TR不給我 > 檔名 他好像把 > xxx.bat 當參數了
Hardy avatar
By Hardy
at 2012-10-18T11:07
請問你是在什麼平台用什麼軟體執行shell?
Joseph avatar
By Joseph
at 2012-10-23T06:30
WinXP 我.exe是網路上找到的 想說這問比較有人在用
Kyle avatar
By Kyle
at 2012-10-24T02:06
抱歉我貼一下
Dorothy avatar
By Dorothy
at 2012-10-24T13:06
你把tr -d "\"" 改為tr -d "\^"" 試試看
Tom avatar
By Tom
at 2012-10-28T23:13
|tr -d "\^"" > test.bat 還是 tr: too many arguments
Daph Bay avatar
By Daph Bay
at 2012-10-31T11:27
http://unxutils.sourceforge.net/UnxUpdates.zip
Robert avatar
By Robert
at 2012-11-02T23:16
兩邊的tr.exe大小不同 但是--help都沒版本 說明好像一
Anthony avatar
By Anthony
at 2012-11-04T18:40
那把tr -d "\""改為sed "s/\^"//g" 試試看
Lauren avatar
By Lauren
at 2012-11-06T08:23
sed "s/\^"//g" 去不掉雙引號 sed "s/\"//g" 可以
但是依然不能 >到檔案 sed: can't read >: Invalid arg
Heather avatar
By Heather
at 2012-11-06T20:49
sed: can't read >: Invalid argument
Hedy avatar
By Hedy
at 2012-11-09T14:05
你把tr -d "\""改為tr -d \^" 試試看
Queena avatar
By Queena
at 2012-11-10T07:30
喔喔 有辦法 \x22 \x20 \x27 用ascii code就不會被
Agatha avatar
By Agatha
at 2012-11-11T22:59
弄混了 "\x22 \x20 \x27" 這樣就很容易看懂

git可以這樣用?

Yedda avatar
By Yedda
at 2012-10-08T08:48
※ 引述《Hannibal8856 ()》之銘言: : 請問各位先進, : 最近部門空降一位資深老鳥, 在他的主導下建立了git以取代原有的VCS. : 然而, 在老鳥建立的repository中, 所有的object / pdf說明文件赫然在列!!! 你說的 object 是 compile 之後的 obj ...

git可以這樣用?

Emily avatar
By Emily
at 2012-10-08T00:25
感謝大家的回答! 從版上大家的回答, 持贊成意見的佔絕大多數~ 看來git真是有趣的管理系統 然而昨天和朋友提到此事, 他的反應是and#34;我咧衝突要怎麼解決?and#34; 這也是我們目前遇到的課題之一 個人覺得, 這是git設計時的考量 為了open source society開發的便利性 所 ...

git可以這樣用?

Poppy avatar
By Poppy
at 2012-10-07T23:11
※ 引述《Hannibal8856 ()》之銘言: : 請問各位先進, : 最近部門空降一位資深老鳥, 在他的主導下建立了git以取代原有的VCS. : 然而, 在老鳥建立的repository中, 所有的object / pdf說明文件赫然在列!!! : 驚嚇之餘, 抱著討教的心情詢問; 得到的答案是and ...

git可以這樣用?

Anthony avatar
By Anthony
at 2012-10-07T18:37
請問各位先進, 最近部門空降一位資深老鳥, 在他的主導下建立了git以取代原有的VCS. 然而, 在老鳥建立的repository中, 所有的object / pdf說明文件赫然在列!!! 驚嚇之餘, 抱著討教的心情詢問; 得到的答案是and#34;有人這樣做啊and#34; 小弟才疏學淺, 似乎未曾看 ...

iptables設定問題

Edwina avatar
By Edwina
at 2012-10-07T17:23
借標題發問 下面是我的 iptables.sh 因為是新手 參考鳥哥的網站設定的 想請教 這樣子設有沒有什麼問題 主機只有負責 NAT+DHCP 然後有開 PORT 給 NAT 後的主機使用 平常是用 SSH 設定主機(區網內) #!/bin/bash iptables -F -t mangle iptab ...