-1

重复:https ://stackoverflow.com/questions/1259545/let-me-know-alternate-command-in-dos-for-following-sed-and-perl-commands-closed


以下命令在 unix box 中具有独特的实现。

需要在 informatica(etl 工具)中实现。如果没有相同的Windows解决方案

sed 's/^#//g' < kam_account_calls.txt > kam_account_calls1.txt

perl -pi -e 's/#//' /coe/informatica/v712_OMJ/FAD/TgtFiles/C3i/CNTDEMO.csv
4

2 回答 2

2

这两个命令看起来非常相似并且(同时)有点奇怪。

两者看起来都在尝试删除包含“#”的行,但第一个只会删除行首的单个“#”,第二个只会删除行中任何位置的单个“#”-也不会删除整条线!

您可能想要的是 Perl 版本sed 版本。

sed 比 Perl 更轻量级。您可以为 Windows 获取它

我希望执行您想要的命令的 sed版本

sed -i -e '/^#.*$/d' -e 's/[ \t]*#.*$//g' kam_account_calls.txt

这将完成整个工作。您需要使用 GNU sed 来实现“-i”(就地)功能。上面的命令变成这样:

 a,b,c
 # a comment
 d,e,f
 # another comment
 g,h,i  # test comment
 j,k,l # test comment with space

进入这个:

 a,b,c
 d,e,f
 g,h,i
 j,k,l

Perl 可以为您做类似的事情,但安装起来要重得多。

于 2009-08-12T07:19:50.417 回答
0

或者获取 MKS Toolkit(或 cgywin),我们在 Windows 上重用相同的 Unix 脚本取得了巨大成功。不喜欢带单引号的 sqplus。

于 2009-09-01T00:04:39.670 回答