2016-11-24 76 views
1

我有一個文件(Flags.txt),看起來像這樣:追加斜槓一定行的末尾在一個文件

... 

C_INCLUDES = ... ... .../xxx 
... 

CXX_INCLUDES = ... ... .../yyy 

其中具有C_INCLUDES線可與任何字符串(這裏e.g xxx)結束。

最後,該文件應是這樣的:

... 

C_INCLUDES = ... ... .../xxx/ 

... 

CXX_INCLUDES = ... ... .../yyy 

所以我想使用Windows批處理文件(不能使用sedawk)來搜索名稱C_INCLUDES,並在追加該行的結尾是正斜槓(但可以是任何smbol,例如「xxxz」或「xxx!」)?

我試圖從溶液:

https://social.technet.microsoft.com/Forums/scriptcenter/en-US/fa09e27d-9f6b-4d4e-adda-f0663e0a9dde/append-string-to-text-file-at-end-of-line-starting-with-blah?forum=ITCG

$original = "flags.txt" 
$tempfile = "tmp.txt" 

get-content $original | foreach-object { 
    if ($_ -match "^C_INCLUDES") { 
    $_ + "/" >> $tempfile 
    } 
    else { 
    $_ >> $tempfile 
    } 
} 

copy-item $tempfile $original 
remove-item $tempfile 

但它不工作

感謝

+0

你知道那些是正斜槓嗎?請確認您想要前進還是後退斜線。還請添加您嘗試過的代碼。確保你提供的信息不是對你的問題的評論或回答。 – Compo

+3

來自其他網站上的答案的發佈代碼是__ _ _ _ _ _ _ _ _ _ _ _ _腳本代碼,而_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _命令行是__not__命令行。 – Mofi

+2

請參閱[如何使用Windows命令行環境查找和替換文件中的文本?](http://stackoverflow.com/questions/60034/)請特別關注[由dbenham編寫的答案](http ://stackoverflow.com/a/16735079/3074564)。帶有正則表達式搜索和替換字符串的'jrepl.bat'解決方案可以用於此任務。 – Mofi

回答

2

你意味着你不能使用第三方(非本地)EXE文件,如sed。但是你可以使用批處理文件。

所以你應該沒有問題,使用JREPL.BAT - a regular expression find/replace text processing utility。 JREPL是純粹的腳本(混合批處理/ JScript),可以在任何Windows機器上從XP開始運行 - 不需要任何第三方exe文件。

完整的文檔可從命令行通過jrepl /?jrepl /??獲取分頁幫助。

一旦你有JREPL.BAT,那麼下面的一個班輪是所有需要的。它會查找以C_INCLUDES開頭並且沒有以/結尾的行,並將/附加到任何匹配的行。

jrepl "^C_INCLUDES .*(?=.$)[^/]" "$&/" /f "Flags.txt" /o - 

由於JREPL是一個批處理腳本,你必須,如果你把另一個批處理腳本中的命令使用call jrepl

+0

非常感謝! – Zlatan