标签: text-processing

创建一个完整且按字母顺序排序的 .txt bash 历史文件

我想要一个完整的、排序的 bash 历史列表。但是有一些问题:

  1. 通过这样做history,列表永远不会显示完整的列表,只显示 1000 个命令。
  2. 在我的$HOME目录中有一个名为.bash_history的文件 ,它显示了 2000 个结果。
  3. 当我想 从我的历史记录中创建一个排序的.txt文件时,我会这样做:

    history | sort > History.txt
    
    Run Code Online (Sandbox Code Playgroud)

    但是由于数字,命令不是按字母顺序排序的,而是按数字排序的。

有什么办法可以做我想做的事吗?

bash sort text-processing bash-history

5
推荐指数
2
解决办法
565
查看次数

列:行太长错误

我正在尝试按照本指南从终端查看前 5 列:https : //chrisjean.com/view-csv-data-from-the-command-line/

当我跑

cat rangelast.csv | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

column: line too long
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

command-line csv text-processing

5
推荐指数
1
解决办法
3286
查看次数

在 80mb 文件中查找和替换?

Ubuntu 中是否有命令行或工具可以在 80mb 文件中“查找和替换”大约 150000 次的单词?

我想替换http://www.old-domain.com/subfolderAhttp://www.new-domain.com/subfolderB

我用 gEdit 和 Atom 尝试过,但都崩溃了。

command-line text-processing

5
推荐指数
1
解决办法
574
查看次数

从日志文件中捕获并编译名称列表

我需要一个单行命令来编译和打印日志文件中列出的所有消耗性运载火箭名称。

ELV 名称都在/elv目录下以大写字母列出。

输出应以每行一个名称的格式出现,没有重复:

ALICE
BOB
CHARLIE
Run Code Online (Sandbox Code Playgroud)

我试过

grep "GET" NASA_access_log_Aug95.txt | grep "ELV" | wc -l
Run Code Online (Sandbox Code Playgroud)

但它只向我显示了 ELV 的数量,没有打印 ELV 名称

以下是我的日志文件示例NASA_access_log_Aug95.txt

cc-rd6-mg1-dip4-9.massey.ac.nz - - [03/Aug/1995:20:43:31 -0400] "GET /elv/TITAN/mars1s.jpg HTTP/1.0" 200 1156
www-a2.proxy.aol.com - - [03/Aug/1995:20:43:31 -0400] "GET /elv/DELTA/dsolids.jpg HTTP/1.0" 200 24558
cc-rd6-mg1-dip4-9.massey.ac.nz - - [03/Aug/1995:20:43:32 -0400] "GET /elv/TITAN/mars3s.jpg HTTP/1.0" 200 1744
castor.gel.usherb.ca - - [03/Aug/1995:20:43:33 -0400] "GET /shuttle/missions/51-l/movies/ HTTP/1.0" 200 372
cc-rd6-mg1-dip4-9.massey.ac.nz - - [03/Aug/1995:20:43:33 -0400] "GET /elv/ATLAS_CENTAUR/atc69s.jpg HTTP/1.0" 200 1659
cc-rd6-mg1-dip4-9.massey.ac.nz - - …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

5
推荐指数
5
解决办法
603
查看次数

如何解码一个文件,其中每个字母都被字母表中前面的 13 个字母替换?

有一个受 ROT13 影响的文本,称为rot.txt. ROT13(旋转 13 位)用字母表中的 13 个字母替换一个字母。如何编写命令来查看实际文本?

我试过:

cat rot.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)

但没有成功

command-line text-processing

5
推荐指数
2
解决办法
1万
查看次数

如何保存一些行而不是全部?

在终端中,如何在单个命令中将现有文件中的第 3、4 和 5 行保存到新文件中?

command-line text-processing

5
推荐指数
1
解决办法
329
查看次数

文本处理恰当地输出文件

我有一个由存储库管理工具的输出制成的文本文件aptly,其中列出了我发布的存储库,我需要从中提取信息。

文件格式如下:

Published repositories:
 * test_repo_one/xenial [i386,amd64] publishes {main: [xenial-main_20190311]: Snapshot from mirror [xenial-main]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {multiverse: [xenial-multiverse_20190311]: Snapshot from mirror [xenial-multiverse]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {restricted: [xenial-restricted_20190311]: Snapshot from mirror [xenial-restricted]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}, {universe: [xenial-universe_20190311]: Snapshot from mirror [xenial-universe]: http//gb.archive.ubuntu.com/ubuntu/ xenial [src]}
 * test_repo_one/xenial-security [i386,amd64] publishes {main: [xenial-security-main_20190311]: Snapshot from mirror [xenial-security-main]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {multiverse: [xenial-security-multiverse_20190311]: Snapshot from mirror [xenial-security-multiverse]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {restricted: [xenial-security-restricted_20190311]: Snapshot from mirror [xenial-security-restricted]: http//gb.archive.ubuntu.com/ubuntu/ xenial-security[src]}, {universe: [xenial-security-universe_20190311]: Snapshot from mirror [xenial-security-universe]: …
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing

5
推荐指数
1
解决办法
160
查看次数

有条件地更改csv中的第二列

我有一个 csv 文件,看起来像:

data/train/4/36280.png,four
data/train/2/10317.png,two
data/train/2/57890.png,two
data/train/1/53448.png,one
data/train/8/58233.png,eight
data/train/4/23599.png,four
data/train/2/35051.png,two
data/train/1/12323.png,one
data/train/9/18562.png,nine
data/train/8/46629.png,eight
data/train/7/1746.png,seven
Run Code Online (Sandbox Code Playgroud)

其中第一列是路径,第二列是类。我想有条件地更改第二列。在伪代码中,我想要类似的东西:

If second column "four" change it to the next row's class
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是想看看我是否可以将 ne 类更改为另一个类,但没有成功:

awk '{ if ($2 == "zero") $2="one"; print $0 }' train.csv > new_file.csv
Run Code Online (Sandbox Code Playgroud)

给我同样的csv。

基本上我想要一个脚本,它给我以下输出 csv:

data/train/4/36280.png,seven
data/train/2/10317.png,four
data/train/2/57890.png,two
data/train/1/53448.png,two
data/train/8/58233.png,one
data/train/4/23599.png,eight
data/train/2/35051.png,four
data/train/1/12323.png,two
data/train/9/18562.png,one
data/train/8/46629.png,nine
data/train/7/1746.png,eight
Run Code Online (Sandbox Code Playgroud)

command-line awk csv text-processing

5
推荐指数
1
解决办法
287
查看次数

如何替换多个 XML 文件中的多个字段?

<filename>我有大约 4000 个 XML 文件,我需要替换和字段的值<path>。我需要动态替换这些字段。例如images0001.xml应该images0001在两个字段内,images0002.xml应该在images0002两个字段内,等等。

我已经使用此命令按顺序重命名文件:

rename 's/.+/our $i; sprintf("images%04d.jpg", 1+$i++)/e' *
Run Code Online (Sandbox Code Playgroud)

我还使用此命令删除了.jpg我试图更改的两个字段中的扩展名:

sed -i 's/.jpg//g' Annotations/*
Run Code Online (Sandbox Code Playgroud)

以下是 XML 文件内容的当前状态:

rename 's/.+/our $i; sprintf("images%04d.jpg", 1+$i++)/e' *
Run Code Online (Sandbox Code Playgroud)

这是我需要更改文件的方式:

sed -i 's/.jpg//g' Annotations/*
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在命令行中执行此操作的方法,但搜索了一段时间后我无法找到解决方案!

任何帮助将不胜感激。提前致谢!

command-line xml text-processing

5
推荐指数
1
解决办法
1625
查看次数

如何在字符串和数字模式周围添加双引号?

您好,我需要在 300k 行的模式中添加双引号。我正在尝试使用 sed,并且在这里阅读了多个查询和其他来源,但我似乎无法理解它的语法。

我有:

chr1    StringTie       exon    191964  192299  1000    -       .       gene_id MSTRG.201; transcript_id MSTRG.201.53; exon_number 2;
chrY    StringTie       exon    26420508        26420531        1000    +       .       gene_id MSTRG.49889; transcript_id MSTRG.49889.11; exon_number 1;
Run Code Online (Sandbox Code Playgroud)

我需要:

chr1    StringTie       exon    191964  192299  1000    -       .       gene_id "MSTRG.201"; transcript_id "MSTRG.201.53"; exon_number 2;
chrY    StringTie       exon    26420508        26420531        1000    +       .       gene_id "MSTRG.49889"; transcript_id "MSTRG.49889.11"; exon_number 1;
Run Code Online (Sandbox Code Playgroud)

我使用 sed 如下:

sed 's/MSTRG./"MSTRG."/g' filename
Run Code Online (Sandbox Code Playgroud)

但我只能得到:

chr1    StringTie       exon    191964  192299  1000    -       .       gene_id "MSTRG."201; transcript_id …
Run Code Online (Sandbox Code Playgroud)

command-line sed text-processing

5
推荐指数
2
解决办法
743
查看次数

标签 统计

text-processing ×10

command-line ×8

awk ×2

csv ×2

sed ×2

bash ×1

bash-history ×1

sort ×1

xml ×1