编辑删除不必要的“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脚本转换为在Windows shell环境中使用gnuWin32版本的cat,sed和sort运行。这是我到目前为止所尝试的内容:
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
我确信我误解了有关批处理脚本的一些基本知识。我试图介绍一些像escape sequences这样的基础知识,但我仍然在画一个空白。任何提示?
谢谢你们!
答案 0 :(得分: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
,来自sed
,awk
等的脚本完全兼容。