0

编辑以删除“cat”命令的不必要使用...

我有一个 Linux shell 脚本,它从 CSV 文件中读取数据并根据文件中每一行的最后一列执行操作。

输入文件具有以下基本格式:

asdf,foo
1234,foo
qwerty,bar
zxcv,baz
7890,bar

原始的 Linux 脚本如下所示:

sed s/.*,//g $1 | sort -u | while read item
do
   # Do stuff with $item
done

我很难将 Linux 脚本翻译成在带有 GnuWin32 版本的 cat、sed 和 sort 的 Windows shell 环境中运行。这是我到目前为止所尝试的:

for /f "tokens=*" %%A in ('sed s/.*,//g %1 ^| sort -u') do (some stuff with %%A)

当我尝试运行它时,我得到:

sed: -e expression #1, char 4: unterminated `s' command
cat: write error: Invalid argument

我确定我误解了有关批处理脚本的基本内容。我试图涵盖一些基本知识,例如转义序列,但我仍然是空白。有什么提示吗?

多谢你们!

4

1 回答 1

2

试试这个:

for /f "delims=" %%A in ('cat "%~1" ^| sed "s/.*,//g" ^| sort -u') do (some stuff with %%A)

在 Windows 中,将 linux shell 脚本中的单引号替换为'双引号"。如果您在 GNUWin 命令中需要双引号,则必须用反斜杠对其进行转义\- 但仅在 Windows shell 提示符下,来自的cmd脚本等是完全兼容的。sedawk

于 2013-07-08T19:07:05.497 回答