将正斜杠附加到文件中某行的末尾

时间:2016-11-24 11:15:22

标签: windows batch-file

我有一个文件(Flags.txt),如下所示:

...

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

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

C_INCLUDES行可以以任何字符串结尾(例如xxx)。

最后,文件应如下所示:

...

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

...

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

因此,我想使用Windows批处理文件(不能使用sedawk)来搜索名称C_INCLUDES,并在行尾添加正斜杠(但可以是任何符号,例如“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

但它不起作用

由于

1 个答案:

答案 0 :(得分: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