於 西元2012年10月08日 16:32, Bad_To_The_Bone 提到:
> 大家好
> 小弟有個c的.h檔
> 內容可能是
> #define _MYFILENAME_STR "text.exe"
> 我想把他做成批次檔的變數
> 也就是
> set _MYFILENAME_STR=test.exe
> 由於裡面可能有多個\t(tab) 與" "(空白)
> 所以我想到的方式是
> grep FILENAME_STR FILENAME_STR 檔名.h > 1.tmp
> sed s/\t//g 1.tmp > 2.tmp
> sed s/" "//g 2.tmp > 3.tmp
> sed s/#define/"set "/g 3.tmp > 4.tmp
> sed s/_STR\"/_STR=/g 4.tmp > 5.tmp
> sed s/\"//g 5.tmp>out.bat
> 但是到了sed s/_STR\"/_STR=/g 4.tmp > 5.tmp的時候
> D:\>sed "s/_STR\"/_STR=/g" 4.tmp > 5.tmp
> set _MYFILENAME_STR=test.exe"
> sed: can't read >: Invalid argument
> set _MYFILENAME_STR=test.exe"
> 想請教一下這種狀況是什麼錯誤呢 感覺是雙引號的問題
> 但是我怎麼改都失敗
> 另外我想要不產生中間的tmp檔
> 改以使用| 該怎麼下指令給sed好呢
只知道 powershell 環境下可以這樣:
[PATH]sed 's/[ \t]//g;s/\"//g;s/#define/set /g;s/_STR/_STR=/g'
[PATH]filename1 > [PATH]filename2
--
⊙翱翔青空.傲視大地⊙