2016-08-05 9 views
1

私は改行で区切られた赤いキー(空白を含む)のリストを含むファイルを持っています。例:空白を含む入力でxargsを使用するにはどうすればよいですか?

My key 1 
My key 2 
some other key 

xargsを使用してすべてを赤から消去するにはどうすればよいですか?

私のような何かをしたい:

cat file-with-keys | xargs -n1 redis-cli del

をしかし、それは理由のスペースでは動作しません。

答えて

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 

、一つは、多くの場合、引数が供給されていない場合は実行されているからプログラムを防止するために、-rまたは--no-run-if-emptyオプションでxargsを提供したい:

xargs -rd'\n' printf "<%s>\n" <file_with_keys 

上記はGNU xargsを前提としています。コメントでJonathan Lefflerが指摘しているように、xargsはこれらのオプションをサポートしていない可能性があります。特に、xargs on Mac OSX-d-rもサポートしていません。

+0

'-r'と' -d'オプションは、POSIX ['xargs'](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html)と比較して、GNU' xargs'の拡張です) - 便利な拡張機能ですが、特にMac OS XなどのBSDベースのシステム、またはHP-UX、AIX、SolarisなどのLinux以外のシステムでは注意が必要です。 –

+0

@JonathanLefflerありがとうございました。互換性の警告で更新された回答。 – John1024

関連する問題