标签: text-processing

如何使用bash从同一行的不同位置grep两个数字?

grep在下面的示例中,我想从同一行中提取 2 个数字:

// ExampleFile.txt
solver.cpp:229] Iteration 2000, loss = 0.305721
solver.cpp:245]     Train net output #0: accuracy = 0.926112
solver.cpp:245]     Train net output #1: accuracy = 0.723957
solver.cpp:245]     Train net output #2: accuracy = 0.599623
sgd_solver.cpp:106] Iteration 2000, lr = 0.000227383
solver.cpp:229] Iteration 2020, loss = 0.294722
solver.cpp:245]     Train net output #0: accuracy = 0.855208
solver.cpp:245]     Train net output #1: accuracy = 0.71616
solver.cpp:245]     Train net output #2: accuracy = 0.619429
Run Code Online (Sandbox Code Playgroud)

我需要“solver.cpp:229] Iteration”右侧和“, loss =”右侧的数字。我需要同时获得两个数字,这样我的结果文件看起来像这样:

// ResultFile.txt
2000 0.305721 …
Run Code Online (Sandbox Code Playgroud)

command-line bash grep text-processing

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

将可变文本逐行添加到文本文件

我有一个文本文件:

cat test1
ch140/121_------_T_201607061430
ch140/121_------_T_201611070840
ch140/121_------_T_201611071125
ch140/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

我想将文本逐行添加到此文件中:

/121_------_T_201607061430
/121_------_T_201611070840
/121_------_T_201611071125
/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

结果必须是:

ch140/121_------_T_201607061430/121_------_T_201607061430
ch140/121_------_T_201611070840/121_------_T_201611070840
ch140/121_------_T_201611071125/121_------_T_201611071125
ch140/121_------_T_201611071235/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

我用了:

cat test1 | sed -e 's/ch140//' > test2
for a in $(cat test2)
do
????
done
Run Code Online (Sandbox Code Playgroud)

我可以为此使用什么命令?
我尝试使用sed命令,但没有用。

command-line bash sed text-processing

6
推荐指数
2
解决办法
344
查看次数

如何使用分隔符从 1 行文本文件中提取文本片段

我想grep STX= .......直到它的第一个分隔符'IRF= .....直到它的第一个分隔符'

喜欢:

:STX=ANAA:1+asdf+5060128703127:P'
IRF=16165193117+160624+160624 '
Run Code Online (Sandbox Code Playgroud)

command-line grep text-processing

6
推荐指数
1
解决办法
1125
查看次数

如何使用sed从存储库中删除一行

我的/etc/apt/sources.list包含这一行:

deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/ 
Run Code Online (Sandbox Code Playgroud)

我想通过sed命令行删除该行,所以我尝试了此代码但返回错误!

$ sudo sed 's:deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/::g' /etc/apt/sources.list
sed: -e expression #1, char 75: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

我猜是这个错误:之后的符号http,但我该如何解决呢?

command-line repository sed text-processing

6
推荐指数
2
解决办法
1126
查看次数

如何按特定字段从 .csv 添加用户?

我正在尝试将我的用户分类到特定的服务器中,所以我现在要做的是按性别获取所有用户。本质上,我将拥有一台服务器,所有男性用户都使用,而另一台服务器则供所有女性用户使用。文件中每行的数据读取如下:

jimlee,7676,jim lee,sony,male,8912,1543,33:44
Run Code Online (Sandbox Code Playgroud)

我在下面使用的命令获取第一个字段,然后添加用户。但是,我的目标是仅添加特定性别并为他们创建用户。所以看看第五个字段如何是性别字段我知道使用-f5会给我那个字段并按性别显示所有用户但我不确定如何根据特定字段获取名称,在这种情况下是第五个字段(性别)。

cut -d ',' -f1 file.csv | while read line; do sudo useradd "$line"; done
Run Code Online (Sandbox Code Playgroud)

command-line csv text-processing

6
推荐指数
2
解决办法
1577
查看次数

在前两个匹配项之间逐行搜索文本

我有带有文本的文件:

1861_ASSET-D_T_201702181000-201702181045_HN_
197895_STRING-H_T_201702181000-201702181045_HN_
14512861_FILE-FD_T_201702181000-201702181045_HN
Run Code Online (Sandbox Code Playgroud)

如何使用 egrep、awk 或 sed 在第一个和第二个匹配项“_”之间分配文本?

我希望有:

ASSET-D
STRING-H
FILE-FD
Run Code Online (Sandbox Code Playgroud)

command-line grep sed awk text-processing

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

仅显示 --side-by-side diff 的右侧

我似乎没有找到解决方法。是否有一个单线只能获得diff --side-by-side输出的右侧?

例如:

为此:diff --side-by-side file1 file2我得到这两种类型的结果之一:

  2 Africa                            |   3 Africa
  3 America                               3 America    
  3 Asia                                  3 Asia
  4 Antarctica                            4 Antarctica
  4 Oceania                               4 Oceania
  7 Europe                                7 Europe
Run Code Online (Sandbox Code Playgroud)

或者

  3 Africa                                3 Africa
  3 America                               3 America
  3 Asia                              <
  4 Antarctica                            4 Antarctica
                                      >   4 Asia
  4 Oceania                               4 Oceania
  8 Europe                                8 Europe
Run Code Online (Sandbox Code Playgroud)

我怎样才能把它们变成这个:

| 3 Africa
  3 America
  3 Asia
  4 Antarctica
  4 Oceania
  7 Europe
Run Code Online (Sandbox Code Playgroud)

这分别是:

  3 Africa …
Run Code Online (Sandbox Code Playgroud)

command-line diff text-processing

6
推荐指数
1
解决办法
5843
查看次数

如何在不同行的两个模式之间替换文本?

我有几个需要替换文本的文件。文本每次都以相同的模式开始和结束,但模式之间的内容是可变的。图案可以出现在行的中间,它们之间的内容往往跨越多行。

每个文件中只会出现一次开始和结束模式。

我需要一个命令行方法来替换模式之间的文本,包括模式本身。输出到新文件或就地编辑都可以。

对单个文件进行操作的命令将起作用,因为我可以遍历文件并自己应用该命令。我尝试了一个sed解决方案,但只能设法替换整行。

文本示例如下:

Cable Type ID:135, Installation ID:62, Alpha Conductor Origin:
Tolerance Report B74 - 3rd June 1996, Beta Conductor Origin: 
Tolerance Report B74 - 3rd June 1996, Phase Conductor Size: 
45mm, Security: Security-Start Bs86gKI-734Lw#32_nP/5589Zfb8Wj-
sW93j9b Security-End, Location ID:889, Protective Earth Size:
67mm, Protective Earth Max Current (A): 4, Overload Time...
Run Code Online (Sandbox Code Playgroud)

开始模式是Security-Start,结束模式是Security-End。我想用这个词替换模式和介于两者之间的所有内容REDACTED

我希望输出是:

Cable Type ID:135, Installation ID:62, Alpha Conductor Origin:
Tolerance Report B74 - 3rd June 1996, Beta Conductor …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

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

创建一个完整且按字母顺序排序的 .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
查看次数

有条件地更改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
查看次数

标签 统计

text-processing ×10

command-line ×9

bash ×3

grep ×3

sed ×3

awk ×2

csv ×2

bash-history ×1

diff ×1

repository ×1

sort ×1