【问题标题】:Alternate ways to add 2 lines to a file too large for me to open将 2 行添加到文件太大而我无法打开的替代方法
【发布时间】:2015-03-22 21:44:57
【问题描述】:

我有一个 JSON 文件太大,Notepad++ 无法打开。有人告诉我写字板会打开它,但它只是挂了。

文件需要在文件开头的新行上有一个左括号[,在文件末尾的新行上有一个右括号]

我已经使用sed 将逗号放在此文件的每一行的末尾,使用的是我在此处找到的命令。但是,我对 sed 和正则表达式的了解还不够,无法为括号编写自己的内容,我不想把它搞砸。

我还发现了这个用于在文件开头添加两行的 Perl 命令:

perl -pi -e '$.=0 if eof;print "first line\nsecond line\n" if ($.==1)' *.txt

我不明白它在说什么。可以调整为开头为1,结尾为1吗?如果您能解释一下,我将不胜感激。

【问题讨论】:

  • 手动拼凑 JSON 可能会对您的流程造成危害。
  • TextPad 是一款不错的 Windows 文本编辑器,支持大文件并包含一个月的试用期。在我为我的副本付费之前,它只是经常发出警告,并没有真正阻止你使用它。
  • 思南乌努尔怎么会有危险?我只是添加括号。

标签: regex perl sed large-files


【解决方案1】:

如果你的磁盘空间足够容纳两个大小相同的文件,你可以使用一个简单的 bash 脚本:

echo "[" > corrected-file.txt
cat original-file.txt >> corrected-file.txt
echo "]" >> corrected-file.txt

【讨论】:

  • 如果我理解正确的话,你创建一个只有一个左括号的新文件,你将该文件连接到我的大文件的前面,然后最后一行将括号添加到新文件的末尾文件。我想知道,我会不会更容易制作两个新文件,一个是我的起始行,一个是我的结束行,然后我可以用我的大文件对它们进行 cat 处理吗?
  • @punstress,不 - 解决方案 1.) echo 创建 corrected-file.txt,内容为 [2.) cat 追加 original-file.txtcorrected-file.txt3.) 再次返回最终的回声 追加最后的]。没有任何巫术的好,简单的解决方案.. ;)
【解决方案2】:

在记事本中创建两个文件,一个只包含[,命名为beginning,另一个包含],命名为end。然后使用cat

cat beginning yourawfullybigfile end > yournewfilewithbothbracketsinit

您也可以使用免费的 emeditor,并像在 notepad++ 中那样编辑您的大文件,如果它足够小的话

【讨论】:

  • 我只是看了一下emeditor;显然免费版本不包含大文件。也许它会在试用期间,但是,唉,它不会安装在 Win XP 上。哦,好吧。
【解决方案3】:

使用 sed:

sed -i -e '1i[' -e '$a]' filename

那是

1 i [   # before the first line, insert a line "["
$ a ]   # after the last line, append a line "]"

【讨论】:

    【解决方案4】:

    $.=0 if eof

    如果同时处理多个文件,这会重置行计数器$.

    print "first line\nsecond line\n" if $. == 1

    如果计数器设置为 1,即脚本正在读取第一行,则输出要添加的两行。

    因此,将其调整为前置 [ 并附加 ] 将是

    perl -i~ -pe '$. = 0, $_ .= /\n/ ? "]\n" : "\n]\n" if eof; print "[\n" if 1 == $.;' *.txt
    

    解释:

    $_ .= /\n/ ? "]\n" : "\n]\n" if eof

    在文件末尾,我们要添加]。但是,该文件可能以换行符结束,也可能没有它。如果有换行符,我们只需添加]\n,如果没有,我们也需要添加它。

    【讨论】:

      【解决方案5】:

      您在 Windows 上。关注joe's advice,创建两个文件。然后使用copy

      C:\> 复制 /b 开头 + yourfile + end newfile

      【讨论】:

      • 我一直在使用 bash,而不是 Windows 命令行。所以我可以使用 cat 和 echo。
      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 2014-12-11
      • 2013-04-02
      • 2016-06-18
      • 2016-09-21
      • 2014-06-30
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多