我有一个文件,其中包含换行符分隔的redis键列表(包含空格)。例如:
select ...
, case hh.time when '00:00' then VAL_0000
when '00:30' then Val_0030
when '01:00' then Val_0100
when '01:30' then Val_0130
...
end as Value
from data cross join "half-hours" as hh
如何使用xargs从redis中删除它们。
我想做类似的事情:
My key 1
My key 2
some other key
但由于空格,它不起作用。
答案 0 :(得分:3)
如果输入是换行符分隔的,请使用:
$ cat file_with_keys | xargs -d'\n' printf "<%s>\n"
<My key 1>
<My key 2>
<some other key>
以上说明了xargs
在管道中的使用。如果源是真正的文件,则不需要cat
:
xargs -d'\n' printf "<%s>\n" <file_with_keys
顺便说一句,人们经常希望xargs
提供-r
或--no-run-if-empty
选项,以防止在没有提供参数的情况下运行程序:
xargs -rd'\n' printf "<%s>\n" <file_with_keys
以上假定GNU xargs
。正如Jonathan Leffler在评论中指出的那样,其他xargs
可能不支持这些选项。特别是,xargs
on Mac OSX既不支持-d
也不支持-r
。