将 2 行添加到一个太大而无法打开的文件的替代方法
Alternate ways to add 2 lines to a file too large for me to open
我有一个 JSON 文件太大,Notepad++ 无法打开。有人告诉我写字板会打开它,但它只是挂起。
文件需要在文件开头的新行上有一个左括号 [
,在文件末尾的新行上有一个右括号 ]
。
我已经使用 sed
在此文件的每一行末尾放置了逗号,使用的是我在此处找到的命令。但是,我对 sed
和正则表达式的了解还不够多,无法为括号编写自己的正则表达式,而且我不想把它搞砸。
我还发现了这个用于在文件开头添加两行的 Perl 命令:
perl -pi -e '$.=0 if eof;print "first line\nsecond line\n" if ($.==1)' *.txt
我不明白它在说什么。能不能调成开头1结尾1?如果你能解释一下,我将不胜感激。
如果您的磁盘 space 足以容纳两个相同大小的文件,您可以使用一个简单的 bash 脚本:
echo "[" > corrected-file.txt
cat original-file.txt >> corrected-file.txt
echo "]" >> corrected-file.txt
$.=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
,如果没有,我们也需要加上它。
使用 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 "]"
在记事本中创建两个文件,一个只有[
,命名为beginning
,另一个有]
,命名为end
。然后使用 cat
.
cat beginning yourawfullybigfile end > yournewfilewithbothbracketsinit
你也可以使用免费的 emeditor,如果文件足够小,就可以像在 notepad++ 中一样编辑你的大文件
您在 Windows。按照,创建两个文件。然后使用 copy
C:\> copy /b beginning + yourfile + end newfile
我有一个 JSON 文件太大,Notepad++ 无法打开。有人告诉我写字板会打开它,但它只是挂起。
文件需要在文件开头的新行上有一个左括号 [
,在文件末尾的新行上有一个右括号 ]
。
我已经使用 sed
在此文件的每一行末尾放置了逗号,使用的是我在此处找到的命令。但是,我对 sed
和正则表达式的了解还不够多,无法为括号编写自己的正则表达式,而且我不想把它搞砸。
我还发现了这个用于在文件开头添加两行的 Perl 命令:
perl -pi -e '$.=0 if eof;print "first line\nsecond line\n" if ($.==1)' *.txt
我不明白它在说什么。能不能调成开头1结尾1?如果你能解释一下,我将不胜感激。
如果您的磁盘 space 足以容纳两个相同大小的文件,您可以使用一个简单的 bash 脚本:
echo "[" > corrected-file.txt
cat original-file.txt >> corrected-file.txt
echo "]" >> corrected-file.txt
$.=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
,如果没有,我们也需要加上它。
使用 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 "]"
在记事本中创建两个文件,一个只有[
,命名为beginning
,另一个有]
,命名为end
。然后使用 cat
.
cat beginning yourawfullybigfile end > yournewfilewithbothbracketsinit
你也可以使用免费的 emeditor,如果文件足够小,就可以像在 notepad++ 中一样编辑你的大文件
您在 Windows。按照copy
C:\> copy /b beginning + yourfile + end newfile