【发布时间】:2015-03-30 09:07:57
【问题描述】:
今天我有几百个项目(来自 SQL 查询的 ID),需要将它们粘贴到另一个查询中以供分析师阅读。我需要 *nix fold 命令。我想取 300 行并将它们重新格式化为每行由空格分隔的多个数字。我会使用fold -w 100 -s。
*nix 上的类似工具包括 fmt 和 par。
在 Windows 上,是否有一种简单的方法可以在 PowerShell 中执行此操作?我希望 *-Format 命令行开关之一能够做到这一点,但我找不到它。我正在使用 PowerShell v4。
见https://unix.stackexchange.com/questions/25173/how-can-i-wrap-text-at-a-certain-column-size
# Input Data
# simulate a set of 300 numeric IDs from 100,000 to 150,000
100001..100330 |
Out-File _sql.txt -Encoding ascii
# I want output like:
# 100001, 100002, 100003, 100004, 100005, ... 100010, 100011
# 100012, 100013, 100014, 100015, 100016, ... 100021, 100021
# each line less than 100 characters.
【问题讨论】:
-
我试过
-join ' ',输出确实换成了 100 个字符,但它换行在数字的中间。我想在空格处换行,这样数字的值就不会被换行所改变。 -
刚刚找到vgoenka.tripod.com/unixscripts/fold.awk.txt,它可能与 Windows 上的 GIT cli 附带的 gawk.exe 一起使用。
-
@EmperorXLII 感谢您的链接。对于未来的读者:Emporer 链接中的解决方案使用
for和本机类型,因此在 10,000-10,000,000 个项目的数据集上可能要快得多。众所周知,循环比管道快 10 倍(当数据集适合 RAM 时)。