我有一个大小为3GB的压缩文件,其中包含两个字段:NAME和STRING。我想将此文件拆分成较小的文件 - 如果第一个字段是john_smith,则希望将字符串放置在john_smith.gz中。注意:字符串字段可以并且确实包含特殊字符。
我可以使用BASH循环轻松地完成域的操作,但我更喜欢使用AWK一次读取文件的效率。
我尝试在awk内使用system函数,并在字符串周围加上转义的单引号:
zcat large_file.gz | awk '{system("echo -e '"'"'"$1"\t"$2"'"'"' | gzip >> "$1".gz");}'
它在大多数行上完美运行,但有些行会打印到STDERR,并显示无法执行命令的错误(shell认为该字符串的一部分是命令)。看起来特殊字符可能会破坏它。
有没有想法如何修复这个问题,或者任何其他实现方法可以帮助?
谢谢!
-Sean
我可以使用BASH循环轻松地完成域的操作,但我更喜欢使用AWK一次读取文件的效率。
我尝试在awk内使用system函数,并在字符串周围加上转义的单引号:
zcat large_file.gz | awk '{system("echo -e '"'"'"$1"\t"$2"'"'"' | gzip >> "$1".gz");}'
它在大多数行上完美运行,但有些行会打印到STDERR,并显示无法执行命令的错误(shell认为该字符串的一部分是命令)。看起来特殊字符可能会破坏它。
有没有想法如何修复这个问题,或者任何其他实现方法可以帮助?
谢谢!
-Sean