我有一个大的(按线数)纯文本文件,我想分成较小的文件,也按行数.因此,如果我的文件有大约2M行,我想将它分成10个包含200k行的文件,或者包含20k行的100个文件(加上一个包含剩余部分的文件;均匀可分的无关紧要).
我可以在Python中相当容易地做到这一点,但我想知道是否有任何一种使用bash和unix utils的忍者方式(而不是手动循环和计数/分区行).
在Mac OS 10.10.3下,我通过输入以下命令安装了gnu-sed:
brew install gnu-sed --default-names
Run Code Online (Sandbox Code Playgroud)
当我再次输入时,我收到消息:
已经安装了gnu-sed-4.2.2
但是,即使重新启动系统并重新启动终端,我仍然无法使用sed的GNU版本.例如:
echo a | sed ’s_A_X_i’
Run Code Online (Sandbox Code Playgroud)
返回:替换命令'i'中的坏标志
我该怎么做才能让GNU版本正常工作?以下是$ PATH变量中的路径.
/Users/WN/-myUnix
/opt/local/bin
/opt/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/calibre.app/Contents/MacOS
/opt/ImageMagick/bin
/usr/texbin
Run Code Online (Sandbox Code Playgroud)
如果我的问题看起来很明显,我很抱歉,但我自己学习shell脚本,并且还不太了解UNIX程序的安装方式.任何帮助使用GNU兼容命令(在这种情况下sed,但很快我也需要其他人)在我的Mac上不会造成损害或不必要的混乱将非常感激.
我在LINUX服务器上存储了CSV文件(大约10,000行;每行有300列).我想将这个CSV文件分成500个CSV文件,每个文件有20条记录.(每个都具有与原始CSV中相同的CSV标题)
是否有任何linux命令来帮助这种转换?
我一直试图使用GNU并行一段时间,但我从来没有能够让它完全运行!
例如,运行(在非空目录中!):
ls | parallel echo # Outputs single new line
ls | parallel echo echo echo # Outputs three new lines.
ls | parallel echo {} # /bin/bash: {}: command not found
ls | parallel echo '{}' # /bin/bash: {}: command not found
ls | parallel 'echo {}' # Outputs: {}
ls | parallel -IMM 'echo MM' # Outputs: MM
Run Code Online (Sandbox Code Playgroud)
它似乎只是将每个参数作为命令执行,这没有任何意义.
我试过bash,zsh,tcsh,csh和sh,但无济于事.
我有一个巨大的csv文件,1米行..我想知道是否有办法将此文件拆分为较小的文件,但保留所有文件的第一行(csv标头).
它似乎split非常快,但也非常有限,就像你不能为.csv这样的文件名添加后缀.
split -l11000 products.csv file_
Run Code Online (Sandbox Code Playgroud)
是否有一种有效的方法来完成这项任务.csv?一行命令会很棒.