我有几个.txt
文件,每个文件超过 3000 万行,任何地方都有 20 到 40 个“列”(一些以逗号分隔,一些以空格分隔,所有 ASCII 行都以换行符分隔)。我不需要所有(甚至大部分)列,其中一些列的空空格填充了NULL
.
我的目标是:
我只是将一个大文本文件拆分为大约 40 个.txt
文件,每个文件包含 1,000,000 行,将它们一个一个地导入 Excel,然后使用 CONCATENATE,但这种方法对我的下一个目标没有产生任何结果。文件以逗号分隔,但仍需转.txt
成.csv
,Excel在导入过程中卡住;即使我把它放到Excel中,主文件也会分解成200多个更小的文件以符合Excel的上限,并且做同样的事情超过200次效率不高。
我正在开发 2020 年末的 MacBook Pro,对任何编码语言都不够精通,甚至不知道从哪里开始,但我在 shell 中编写了半舒适的脚本,并且总是在学习新技巧,只是不知道从哪儿开始。
是否有任何软件(或伪代码)可以自动扫描一段文本(粘贴到工具中,或从 .doc/.pdf 中读取)并使用标准格式识别引文数据?然后将数据拆分为其组成字段并以 XML、CSV 或其他一些结构化数据格式导出。我看过cb2Bib但它只能从哈佛风格的参考文献中提取年份,这是不够的。
我在将数据从 SQL Server 2005 的结果网格粘贴到 excel 2007 电子表格时遇到问题。
我在 SQL Server 中有一个查询,它返回 2 列(一个数字列和一个文本列)
在一台计算机上,我可以愉快地复制(右键单击 > 复制),然后只需右键单击并粘贴到 Excel 电子表格中。没问题。
在另一台计算机上,当我尝试粘贴到 excel 时,它会将文本列拆分并根据单词之间的空格将文本粘贴到多列中。
例如,如果其中一行有...
请粘贴我
...然后在粘贴到 excel 时,它会拆分文本并将每个单词粘贴到 excel 中的单独列中。
我们已经尝试将 SQL Server 和 excel 中的选项与其运行良好的计算机进行比较,但没有发现任何差异。
欢迎任何想法
谢谢
我有一个 json 格式的文本文件,想将其读入 Excel。json 文件的一个非常简化的示例具有以下结构:
{ [
{ 'a': 10, 'b': 20 },
{ 'a': 20, 'b': 22 },
{ 'a': 11, 'b': 24 }
] }
Run Code Online (Sandbox Code Playgroud)
我想将其转换为 Excel,其中每条记录都成为 excel 中的一行,并将所选参数作为列标题。
我正在尝试使用 sed 来提取 URL 查询字符串中许多键值对之一的值部分
这就是我正在尝试的:
echo 'http://www.youtube.com/watch?v=abc&g=xyz' | sed 's@^https?://(www.)?youtube.com/(watch\\?)?.*?v(=|/)([a-zA-Z0-9\-_]*)(&.*)?$@$4@'
Run Code Online (Sandbox Code Playgroud)
但它总是按原样输出输入 URL。
我究竟做错了什么?
更新 1
澄清一些问题:
sed
我正在使用的版本,但它是 Mac OS X (10.7.5) 附带的版本。sed
$1、$2 等版本中,似乎是匹配项,\1、\2 等给出错误:
sed: 1: "s@^https?://(www.)?yout ...": \4 not defined in the RE
不正确!正如我后来发现的那样。造成混乱的道歉。更新 2
Have updated the sed
RE to make it more specific based on suggestion by @slhck below, but the issue remains as before.
Update 3
Based on the man
page for this version of sed …
我创建了一个名为\;:$"\'
测试我的软件的文件。我最终出现错误,因为我无法删除文件属性。我试图找到一个精确的字符组合来通过 删除它rm
,但我找不到方法。
rm \\;:$\"\\\'
rm: cannot remove `\\': No such file or directory
rm "\\"\;:$\"\\\'
rm: cannot remove `\\;:$"\\\'': No such file or directory
rm '\;:$"\'''
rm: cannot remove `\\;:$"\\': No such file or directory
Run Code Online (Sandbox Code Playgroud)
(这最后一次尝试杀死了我)
以及许多其他尝试。需要伸出援助之手!
我有一个具有以下文件名的文件夹:
00150005D201110172338427995.vpf
00150005D201110180005318058.vpf
00150013D201110180014448082.vpf
00150013D201110180022268098.vpf
00150013D201110180056118137.vpf
00150004D201110180102008142.vpf
00150004D201110180105398145.vpf
00150016D201110180115378151.vpf
00150016D201110180122168161.vpf
00150003Z201110180143308169.vpf
00150050S201110180232190009.vpf
Run Code Online (Sandbox Code Playgroud)
每个文件都以 9 个字符的字符串开头,该字符串是唯一标识符。我希望能够为每个文件解析这些文件夹,并根据 9 个字符的前缀创建一个具有前缀名称的文件夹,然后将文件移动到新创建的文件夹中。
例子:
前:
f:\ION\2011291 Contains the following files
00150005D201110172338427995.vpf
00150005D201110180005318058.vpf
00150013D201110180014448082.vpf
00150013D201110180022268098.vpf
00150013D201110180056118137.vpf
00150004D201110180102008142.vpf
00150004D201110180105398145.vpf
00150016D201110180115378151.vpf
00150016D201110180122168161.vpf
00150003Z201110180143308169.vpf
00150050S201110180232190009.vpf
Run Code Online (Sandbox Code Playgroud)
后:
F:\ION\2011291 contins only folders no files
F:\ION\2011291\00150005D contains
00150005D201110172338427995.vpf
00150005D201110180005318058.vpf
F:\ION\2011291\00150013D\ contains
00150013D201110180014448082.vpf
00150013D201110180022268098.vpf
00150013D201110180056118137.vpf
F:\ION\2011291\00150004D \contains
00150004D201110180102008142.vpf
00150004D201110180105398145.vpf
F:\ION\2011291\00150016D\ contains
00150016D201110180115378151.vpf
00150016D201110180122168161.vpf
F:\ION\2011291\00150003Z\ contains
00150003Z201110180143308169.vpf
F:\ION\2011291\00150050S
00150050S201110180232190009.vpf
Run Code Online (Sandbox Code Playgroud)
参数:
我看到一堆有“.sha256”文件的 FOSS 项目。它们看起来像这样:
dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg *meow.exe
Asdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfg3 cool_stuff.exe
dsdfdfdsfDdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffg3kgdfgg even_more_stuff.exe
Run Code Online (Sandbox Code Playgroud)
我目前通过以下方式得到这些:
#^([A-Za-z0-9]{64})\s+(\S+)$#um
Run Code Online (Sandbox Code Playgroud)
这将匹配dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg
和*meow.exe
等。神秘地以星号开头的文件名(我无数次试图查找它,但不知道这意味着什么)被剥夺了它们的开头*
。
还有比这更重要的事情吗?如果文件名中包含空格而不是下划线,会发生什么情况?然后我的正则表达式崩溃了。可以引用它们吗?如果是,是使用 Linux(单引号)还是 Windows 风格(双引号)引用?
这种看似简单的文件格式实际上有无数与之相关的问题,但我没有在任何地方看到它的定义。到目前为止,我也没有遇到过使用空格或任何类型的引号的文件名。但他们确实使用星号,显然它也可以出现在文件名的末尾......
应该如何解析这种疯狂,以免有一天崩溃?
好的,所以我有一个包含数千个字符串的文件。每个人都在自己的线上。我想制作一个脚本,允许我获取这个文件,调用它list.txt
,并从每一行中获取项目,并根据第一个字母或数字将其放入单独的文件中。例如,假设文件的前几行是这样的:
cheese
pizza
pepperoni
lettuce
grahamCrackers
0-0Foods
chicken
lentils
1-2Items
Run Code Online (Sandbox Code Playgroud)
我需要把它分解成这些:
cheese
chicken
Run Code Online (Sandbox Code Playgroud)
grahamCrackers
Run Code Online (Sandbox Code Playgroud)
lettuce
lentils
Run Code Online (Sandbox Code Playgroud)
pizza
pepperoni
Run Code Online (Sandbox Code Playgroud)
0-0Foods
Run Code Online (Sandbox Code Playgroud)
1-2Items
Run Code Online (Sandbox Code Playgroud)
我想在 OS X 上用 BASH 完成这个。谢谢。
哦,如果有帮助的话。每行上的项目永远不会有空格,它们将始终包含为一个单词。EG(从不鸡汤,而是鸡汤)
我试图在文本文件中所有行的末尾添加一个字符串,但我在某处出错了。
例子:
我在一个文本文件中有这个:
begin--fr.a2dfp.net
begin--m.fr.a2dfp.net
begin--mfr.a2dfp.net
begin--ad.a8.net
begin--asy.a8ww.net
begin--abcstats.com
...
Run Code Online (Sandbox Code Playgroud)
我跑:
sed -i "s|\x0D$|--end|" file.txt
Run Code Online (Sandbox Code Playgroud)
我得到:
begin--fr.a2dfp.net--end
begin--m.fr.a2dfp.net--end
begin--mfr.a2dfp.net--end
begin--ad.a8.net
begin--asy.a8ww.net--end
begin--abcstats.com
...
Run Code Online (Sandbox Code Playgroud)
该字符串仅在某些行中添加,而在其他行中不添加。
知道为什么吗?