进程替换不适用于带有iconv的输入文件

时间:2014-12-11 20:42:54

标签: bash iconv

在bash中运行它。

当我阅读iconv的手册页时,它接受多个输入文件,因此

中的猫
iconv --from-code ISO_8859-1 --to-code UTF8 <( cat <(sed  '/^KEYWORD INTERFACE/,$d' actors.list)  <(sed  '/^KEYWORD INTERFACE/,$d' actresses.list)  <(sed  '/^KEYWORD INTERFACE/,$d' directors.list)) 

不应该是必要的,但是如果我没有它,那么只有来自actors.list文件的数据出现在输出中。

1 个答案:

答案 0 :(得分:1)

这肯定是与iconv一起分发的glibc中的错误。通过提供多个非mmapable命令行输入来触发该错误。

最简单的解决方法是通过将sed的调用放入单个命令替换来提供单个输入:

iconv --from-code ISO_8859-1 --to-code UTF8 \
      <(sed  '/^KEYWORD INTERFACE/,$d' actors.list
        sed  '/^KEYWORD INTERFACE/,$d' actresses.list
        sed  '/^KEYWORD INTERFACE/,$d' directors.list)

在这种特殊情况下,您只需使用一个sed命令:

iconv --from-code ISO_8859-1 --to-code UTF8 \
      <(sed  '/^KEYWORD INTERFACE/,$d' \
             actors.list actresses.list directors.list)

当然,您也可以在OP中插入冗余的cat


Bug向glibc报告为https://sourceware.org/bugzilla/show_bug.cgi?id=17703