V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
guozhi
V2EX  ›  问与答

请问如何生成一个内容为 10000 - 99999 的 .txt 文本?

  •  
  •   guozhi · 2014-10-11 14:44:48 +08:00 · 5609 次点击
    这是一个创建于 3695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10000
    10001
    10002
    10003

    99999

    每行一个,请问如何用最简单的方法生成?
    41 条回复    2014-10-12 12:34:04 +08:00
    oott123
        1
    oott123  
       2014-10-11 14:48:21 +08:00 via Android   ❤️ 4
    Excel 楼主你装了吧?
    拉一下,再另存为 csv ,再改名为 txt 。
    spance
        2
    spance  
       2014-10-11 14:51:52 +08:00   ❤️ 1
    ```bash

    for ((i=10000;i<=99999;i++));do echo $i;done > seq.txt

    ```
    celadevra
        3
    celadevra  
       2014-10-11 14:54:37 +08:00   ❤️ 1
    GNU 版的 seq:

    $ seq 10000 99999 > seq.txt
    xcv58
        4
    xcv58  
       2014-10-11 14:55:13 +08:00 via Smartisan T1   ❤️ 1
    seq +1
    Sunyanzi
        5
    Sunyanzi  
       2014-10-11 14:57:48 +08:00   ❤️ 1
    seq ... 我想不到比这个更简单的办法了 ...
    guozhi
        6
    guozhi  
    OP
       2014-10-11 14:58:02 +08:00
    @oott123 这个倒是挺简单,但是速度太慢 :)
    @spance
    @celadevra
    这个看不懂呀,请教如何使用?
    celadevra
        7
    celadevra  
       2014-10-11 15:03:35 +08:00   ❤️ 1
    @guozhi 想必你是 Windows 用户?装个 Cygwin,在 Cygwin Terminal 里面输入,默认安装应该就有 seq 这个命令了。如果 Cygwin 装在 C:\Cygwin 下,直接输入上面命令生成的 txt 应该在 C:\Cygwin\home\%用户名%\ 子目录下面。
    learnshare
        8
    learnshare  
       2014-10-11 15:03:42 +08:00
    bash 等脚本语言都很容易吧
    oott123
        9
    oott123  
       2014-10-11 15:10:04 +08:00 via Android
    @guozhi 我猜楼主提出这样的需求,这应该是对你来说最快的方法了吧。
    bash 什么的, seq 什么的,对于你来说太麻烦了呀。
    guozhi
        10
    guozhi  
    OP
       2014-10-11 15:19:18 +08:00
    @celadevra 感谢,完成了:)
    wzxjohn
        11
    wzxjohn  
       2014-10-11 15:21:13 +08:00 via iPhone   ❤️ 1
    @celadevra 这是何苦,bat又不是做不到。。。
    BGLL
        12
    BGLL  
       2014-10-11 15:22:39 +08:00   ❤️ 1
    一些文本编辑器都有这种功能:


    或者win下用 批处理(新建个文本文件复制下面文字,保存后缀为.bat,然后双击运行):
    for /l %%i in (1,1,1000) do echo %%i>>1.TXT
    zencoding
        13
    zencoding  
       2014-10-11 15:27:48 +08:00 via Android
    有这会儿功夫早弄出来了~~
    BGLL
        14
    BGLL  
       2014-10-11 15:28:01 +08:00
    忘记说了
    括号里前2位填起始数字,后面1位为终止数字。
    批处理开头加入@echo off,关掉回显,速度会快很多。

    @echo off
    for /l %%i in (10000,10000,99999) do echo %%i>>1.TXT
    cxh116
        15
    cxh116  
       2014-10-11 15:33:36 +08:00
    ruby版
    ```
    ruby -e '(10000..99999).each{|a| puts a}' > /tmp/num.txt

    ```
    ToughGuy
        16
    ToughGuy  
       2014-10-11 15:37:40 +08:00
    echo {10000..99999} | tr -s ' ' '\n' >seq.txt
    for ((i=10000;i<=99999;i++)); do echo $i; done >seq.txt
    seq 10000 99999 >seq.txt
    awk 'BEGIN{for (i=10000;i<=99999;i++) print i}' >seq.txt
    python -c 'for i in xrange(10000, 100000): print i' >seq.txt

    哎呀方法太多... -_-!
    feiyuanqiu
        17
    feiyuanqiu  
       2014-10-11 15:50:55 +08:00
    如果手边有浏览器,按F12,然后复制这段
    var str = [], i = 10000; while (i < 100000) { str.push(i++); } document.body.innerHTML = str.join('<br />');

    然后复制粘贴到记事本...当然会比较卡
    workaholic
        18
    workaholic  
       2014-10-11 16:00:22 +08:00
    @1oott123 牛,秒杀n行代码
    aa65535
        19
    aa65535  
       2014-10-11 16:02:32 +08:00   ❤️ 1
    @BGLL 这样更高效
    (for /l %%i in (10000,1,99999) do echo %%i)>list.txt
    likaci
        20
    likaci  
       2014-10-11 16:13:59 +08:00
    zxp
        21
    zxp  
       2014-10-11 16:18:08 +08:00
    echo -e {10000..99999}\\n>list.txt
    F2Sky
        22
    F2Sky  
       2014-10-11 16:20:07 +08:00
    我觉得不是 coder 的话,还是 Excel 和 批处理的方法更简单,毕竟就为了完成一个任务,装个工具马上就卸载掉。

    我在 Excel 里拖动获取这种数列比较多,当然都不是太长的

    如果是楼主的要求,我会选择批处理,其它的要安装开发工具的就算了
    devour
        23
    devour  
       2014-10-11 16:50:02 +08:00
    @oott123 excel不是最大65536吗?还得再拉一列?
    lazyphp
        24
    lazyphp  
       2014-10-11 16:53:02 +08:00
    bat或者shell 可以轻松完成
    dychenyi
        25
    dychenyi  
       2014-10-11 16:55:46 +08:00 via Android
    膜拜大神们
    iango
        26
    iango  
       2014-10-11 17:04:12 +08:00
    偶尔就要用一下的页面,有前后续时效率不好。
    下面代码存为.htm,用浏览器打开。
    序列填“10000”,数量填“89999”
    -----------------------------
    <html>
    <head>
    <title> 生成序列 </title>
    <script type="text/javascript">
    function getValue()
    {
    var _vex=document.getElementById("_Iex").value.toString()
    var _vfrom=document.getElementById("_Ifrom").value.toString()
    var _vbody=document.getElementById("_Ibody").value
    var _vsn=document.getElementById("_Isn").value
    var x=document.getElementById("_dbody")
    var vall = ""
    var _i1=Number(_vbody)
    var _i2=Number(_vsn)

    for (i = 0; i < _i2; i++)
    {
    vall= vall +_vex + _i1 + _vfrom + "<br />";
    _i1++;
    }


    x.innerHTML= vall.toString();
    //alert(_vex)
    }
    </script>

    </HEAD>

    <BODY>
    前缀 <INPUT TYPE="text" VALUE="" ID="_Iex" NAME="_Iex"> 后缀<INPUT TYPE="text" VALUE="" ID="_Ifrom" NAME="_Ifrom"><br>
    序列<INPUT TYPE="text" VALUE="0" ID="_Ibody" NAME="_Ibody"> 数量<INPUT TYPE="text" VALUE="10" NAME="_Isn" id="_Isn">
    <INPUT TYPE="button" VALUE="生成" onclick="getValue()">


    <hr>
    <div id="_dbody"></div>
    </BODY>
    </HTML>
    oott123
        27
    oott123  
       2014-10-11 17:12:06 +08:00 via Android
    @devour 那是什么年代的事情了…
    我的 Excel 可以轻松处理 100k+ 的表格啊…
    10iii
        28
    10iii  
       2014-10-11 17:52:38 +08:00
    excel <=2003 确实有65K限制。
    loryyang
        29
    loryyang  
       2014-10-11 18:05:05 +08:00   ❤️ 1
    你们这群大牛,不会自己生成一个,给lz传过去吗?或者放到网盘上。。。
    bzw875
        30
    bzw875  
       2014-10-11 19:11:00 +08:00
    javaScript版来了,运行复制到txt文件里就好啦,可惜我大javaScript没有读写文件的爪子
    var result = "";
    for(var i = 10000; i < 100000; i++) {
    var p = i + "<br>";
    result += p;
    }
    document.body.innerHTML = result;
    scg16
        31
    scg16  
       2014-10-11 19:15:15 +08:00   ❤️ 2
    lujjjh
        32
    lujjjh  
       2014-10-11 22:34:20 +08:00   ❤️ 1
    @bzw875

    跟 HTML5 合作就不一样了。

    上 CoffeeScript

    anchor = document.createElement 'a'
    anchor.href = 'data:text/plain;charset=UTF-8,' + [10000..99999].join encodeURIComponent('\r\n')
    anchor.download = 'dict.txt'
    anchor.click()

    不过既然是在 Windows 下,最方便最实惠的方法还是 1L 说的 Excel(如果有 Office)。程序实现感觉没太大的必要,写代码的功夫 Excel 早拖拽出来了。
    popoge
        33
    popoge  
       2014-10-11 23:26:01 +08:00
    很好奇楼主为什么会有这样的需求
    Mutoo
        34
    Mutoo  
       2014-10-12 01:10:09 +08:00
    @popoge 目测是要跑字典
    guozhi
        35
    guozhi  
    OP
       2014-10-12 02:38:15 +08:00
    谢谢楼上各位大牛这么热情啊,已用 seq 完成了。刚睡醒,做了一个不通寻常的梦,好后怕……

    @scg16 谢谢你传网盘 XD
    xcatliu
        36
    xcatliu  
       2014-10-12 09:45:05 +08:00
    @bzw875 用 nodejs 呗

    ```
    (function(fileName) {
    var content = '10000';
    for (var i = 10001; i < 100000; i += 1) {
    content += '\n' + i;
    }
    require('fs').writeFileSync(fileName, content);
    })('seq.txt');
    ```
    canautumn
        37
    canautumn  
       2014-10-12 11:29:21 +08:00
    感觉这个是为了让大家展示一下有多少种方法生成连续序列。我觉得对于非coder来说,最简单的方法是善用google,搜索一下generate sequence online可以找到下边的网址,输入起始和终止,就能下载生成的文本文件了:
    http://textmechanic.com/Generate-List-of-Numbers.html
    canautumn
        38
    canautumn  
       2014-10-12 11:53:12 +08:00   ❤️ 1
    虽然搜一个在线工具更简单,不过既然这个帖子已经变成这样了,那我也凑个热闹。
    matlab/octave:dlmwrite('test.txt',10000:99999,'\n')

    @oott123
    @F2Sky
    @lujjjh 另外Excel不需要拖动那么麻烦,在A1输入10000,选中然后去菜单Edit-Fill-Series,选column,Stop栏填99999,就ok了。
    F2Sky
        39
    F2Sky  
       2014-10-12 12:23:31 +08:00
    @canautumn 你用的什么版本啊?我怎么在 Excel 没有找到你说的菜单 (Excel 2010)
    canautumn
        40
    canautumn  
       2014-10-12 12:30:02 +08:00
    @F2Sky Office 2011 mac 用windows版的话,应该在Home 面板的editing里有fill按钮,是一个向下的箭头。mac版也有这个面板,只不过mac版保留了菜单栏。
    F2Sky
        41
    F2Sky  
       2014-10-12 12:34:04 +08:00
    @canautumn

    刚才翻菜单栏,找到了:





    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:58 · PVG 16:58 · LAX 00:58 · JFK 03:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.