标签: text-processing

如何在 Ubuntu 16.04 上的单个命令中执行此操作?

我有一个 URL 文件,格式如下:

com.blendtuts/S
°=
com.blengineering.www/:http
±=
com.blenheimgang.www/le-porsche-museum-en-details/porsche-museum-3
²=
com.blenheimsi
³=
com.blenkov.www/page/media/18/34/376
´=
com.blentwell.www/bookmarks.php/jackroldan/sp
¸=
com.blentwell.www/tags.php/I
Run Code Online (Sandbox Code Playgroud)

文件大小以千兆字节为单位。说大约 250 GB 的文件大小。

我试图反转文件中的单词并仅从文本中提取域。我尝试使用 Ubuntu OS 终端命令来制作它。让我告诉你我的尝试:

首先,我使用以下命令删除了“/”之后的数据:

~$ ex -sc '%s/\(\/\).*/\1/ | x' newfile.txt > ddm.txt
Run Code Online (Sandbox Code Playgroud)

结果如下:

com.blendtuts/
 °=
com.blengineering.www/
±=
com.blenheimgang.www/
²=
com.blenheimsi
³=
com.blenkov.www/
´=
com.blentwell.www/
¸=
com.blentwell.www/
Run Code Online (Sandbox Code Playgroud)

现在我使用以下解决方案反转文件中的完整文本:https : //stackoverflow.com/questions/40467918/how-to-reverse-the-word-in-ubuntu

并得到以下结果:

    /blendtuts.com
    °= /www.blengineering.com
    ±= /www.blenheimgang.com
    ²= blenheimsi.com
    ³= /www.blenkov.com
    µ=  /www.blentwell.com
    ¶=  /www.blentwell.com
    •=  /www.blentwell.com

/www.blentwell.com
Run Code Online (Sandbox Code Playgroud)

但问题仍然没有解决。我想知道如何使用 Ubuntu 提取 URL 并将它们放入另一个文件中。正如您在输出上方看到的,我仍然拥有的不是域,它带有一个反斜杠。

如果使用任何其他操作系统可以解决此类问题,请告诉我。我更喜欢使用 Ubuntu。

我想从文件中提取域并将它们分离到另一个文件中,并且以正确的格式将它们分开。

如果我获得了唯一域,那么这将是我查询的绝佳解决方案。否则,我使用命令为:

$ sort …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

3
推荐指数
1
解决办法
547
查看次数

使用 sed 替换特定行号的文本

我有一个 html 文件users.html,我想替换第一行。第一行看起来像这样

<template name="AccountSettings">
Run Code Online (Sandbox Code Playgroud)

我想读第一行

<template name="Users">
Run Code Online (Sandbox Code Playgroud)

command-line sed text-processing

3
推荐指数
1
解决办法
6415
查看次数

在 x 时间间隔内根据时间戳处理文件记录

我有一个文件,其中的一部分作为示例,如下所示,其中包含一个时间戳字段:

20161203001211,00
20161203001200,00
20161203001500,102
20161203003224,00
20161203001500,00
20161203004211,00
20161203005659,102
20161203000143,103
20161202001643,100
....
Run Code Online (Sandbox Code Playgroud)

我想根据时间戳处理此文件,以计算 15 分钟间隔内的发生次数。我知道如何每分钟都这样做,我也使用awk脚本在 10 分钟的间隔内完成,但不知道如何才能在 15 分钟的间隔内获得以下输出:

startTime-endTime             total SUCCESS FAILED    
20161203000000-20161203001500 5     3       2
20161203001500-20161203003000 2     1       1
20161203003000-20161203004500 2     2       0
20161203004500-20161203010000 1     0       1
20161202000000-20161202001500 0     0       0
20161202001500-20161202003000 1     0       1
....
Run Code Online (Sandbox Code Playgroud)

00 表示成功,其他情况表示失败记录。

是的,它是 24 小时,所以一天中的每个小时都应该打印 4 条间隔记录。

python command-line perl awk text-processing

3
推荐指数
1
解决办法
737
查看次数

修改列表:过滤它,并重新排列结果中的值

我有一个包含以下信息的文件:

用户名:sjohhny@email1.com
值一:xx:xx:xx:xx:xx:xx
值二:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
值三:Sjohhny@email1.com@[xx:xx] [三个值的混合]

用户名:Vsamba@email3.com
值一:mm:mm:mm:mm:mm:mm
数值二:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm
值三:Vsamba@email3.com@[xx:xx] [三个值的混合]

用户名:Skrids@email2.com
值一:yy:yy:yy:yy:yy:yy
值二:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy
值三:Skrids@email2.com@[xx:xx] [三个值的混合]

用户名:Vconan@email4.com
值一:zz:zz:zz:zz:zz:zz
值二:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz
值三:Vconan@email4.com@[xx:xx] [三个值的混合]

首先,我想过滤掉所有以 S 开头的用户名信息,保留那些以 V 开头的用户名。之后,我想制作一个可以运行的 .sh 脚本的最终产品。我想做的是:

  1. 回显用户名
  2. 删除第三个值
  3. 在第一个和第二个值上使用开关 -One、Two 和 --Thanks -for -visiting 运行命令 Hello。

所以,我的 .sh 文件将与此类似

echo 用户名:Vsamba@email3.com
你好 -一个 mm:mm:mm:mm:mm:mm -Two: mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm --谢谢 -访问

echo 用户名:Vconan@email4.com
你好一 zz:zz:zz:zz:zz:zz -二:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz --Thanks -for -参观

我在 Youtube 上观看了关于 Sed 的整个视频系列,并阅读了这里的许多文章,试图想出一个可以生成我想要的脚本的脚本,但都失败了。你能告诉我如何编写这样的脚本吗?如果您推荐新用户可以阅读的有关 sed(或 Awk 或 Perl)的网站/参考资料,我也很乐意

请注意,“:”的数量对于值一和值二来说是静态的,这可能会以某种方式使用。我尝试使用它,但每次当我只要求一个值时我得到了两个值,但是你比我更知道如何利用这个事实。

抱歉问了这么长的问题!在没有自动化过程的情况下完成所有这些需要花费太多时间,而且我完全在 linux 世界(和一般的计算机,就此而言!)

command-line bash scripts text-processing

3
推荐指数
1
解决办法
155
查看次数

如何按照另一列中给出的次数重复列中的每个文本字段?

我有一个文件,说“test.txt”:

5 80  
3 70  
4 60  
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个看起来像楼梯/台阶的 R 图:5 个数据点的 y 值 80,然后 3 个数据点的 y 值 70,然后 4 个数据点的 y 值 60,如下所示:

楼梯图示例

我怎么能转换test.txttransformed.txt

80  
80  
80  
80  
80  
70  
70  
70  
60  
60  
60  
60  
Run Code Online (Sandbox Code Playgroud)

在外壳上,或者直接从test.txt.

command-line r text-processing

3
推荐指数
1
解决办法
210
查看次数

如何按域对电子邮件进行分组,从目录中的所有文件中组合和汇总?

我有一些 CSV 文件。每个文件都有一个电子邮件地址列表。以下是从文件中提取的数据:

%%%%%%%%%%@yahoo.com
%%%%%%@wanadoo.fr
%%%%raviplywoodglasscentre@yahoo.comravi
%%nameemail%%@yahoo.com
%.getincontact@numberland.com
%1%3@example.com
%1@example.com
Run Code Online (Sandbox Code Playgroud)

我试图尝试的是从这些电子邮件地址中提取域,然后以将与某个域关联的电子邮件一起列出的方式排列电子邮件地址。
例如:

yahoo.com,%%%%%%%%%%@yahoo.com
wanadoo.fr,%%%%%%@wanadoo.fr
yahoo.comravi,%%%%raviplywoodglasscentre@yahoo.comravi
yahoo.com,%%nameemail%%@yahoo.com
numberland.com,%.getincontact@numberland.com
example.com,%1%3@example.com
example.com,%1@example.com
Run Code Online (Sandbox Code Playgroud)

我试图获得的最终输出如下所示:

yahoo.com,%%%%%%%%%%@yahoo.com,%%nameemail%%@yahoo.com
wanadoo.fr,%%%%%%@wanadoo.fr
yahoo.comravi,%%%%raviplywoodglasscentre@yahoo.comravi
numberland.com,%.getincontact@numberland.com
example.com,%1%3@example.com,%1@example.com
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

3
推荐指数
2
解决办法
342
查看次数

如何仅删除字段中的最后一个正斜杠?

我有一个 json 文件,我只需要删除最后一个正斜杠。看例子:

{"url":"http://example.com/vary/file/","originalUrl":"http://example.com/vary/file/","applications":[{.........}]}
Run Code Online (Sandbox Code Playgroud)

我只希望数据看起来像:

{"url":"example.com/vary/file","originalUrl":"example.com/vary/file","applications":[{.........}]}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点sed

command-line sed text-processing json

3
推荐指数
3
解决办法
3637
查看次数

除第一列外的所有小写

我怎样才能使除第一列以外的所有内容小写?

喜欢:

1 ONE
2 TWO TWO
3 THREE THREE THREE
Run Code Online (Sandbox Code Playgroud)

所需输出:

1 one
2 two two
3 three three three
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

3
推荐指数
1
解决办法
1360
查看次数

从行号中获取 1 行和 1 行

我试图从文件中显示几行。我所知道的是这样的:

head -n48964204 xag
Run Code Online (Sandbox Code Playgroud)

但这将显示前面提到的行号。我正在尝试的是获取行号的记录48964203,48964204,and 48964205.

我也试过这个:sed -n 48964204p xag 但这只显示文件的一行。

command-line text-processing

3
推荐指数
1
解决办法
182
查看次数

自动计算出现次数

我想知道 'ABCD'(文件 A)在 DB(文件 B)中出现了多少次。同样,我想知道文件 A 中针对 DB 的每一行。我需要一个可以简化我的工作的自动化命令,因为我在文件 A 中有大量数据,我想在许多数据库中搜索它。我只是为了理解而将字符加粗。

文件A

ABCD
EFG
HIJKL
MNO
PQRSTU
Run Code Online (Sandbox Code Playgroud)

文件B

XYZ ABCD FORNTUFPSRWSABCFYWSZCFTHBFORTYBJNF ABCD D EFG ACVRT EFG PQRMNOOPQ EFG ZXXXYY

期望的输出:

ABCD  2
EFG   3
HIJKL 4567
MNO   0
PQRSTU 7652
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

3
推荐指数
3
解决办法
1507
查看次数

标签 统计

command-line ×10

text-processing ×10

sed ×2

awk ×1

bash ×1

json ×1

perl ×1

python ×1

r ×1

scripts ×1