标签: text-processing

CSV:连接更多行数据

我有这个file1.csv

A,dog cat horse cow
B,goat deer fish
A,deer goat 
C,dog cat 
C,goat
Run Code Online (Sandbox Code Playgroud)

我需要合并加入类似的行(例如 A 和 C):

A,dog cat horse cow deer goat 
B,goat deer fish
C,dog cat goat
Run Code Online (Sandbox Code Playgroud)

command-line csv text-processing

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

搜索并替换包含反斜杠的模式

我有一个文件

bla bla bla bla bla bla bla
bla bla bla bla bla bla bla
\newcommand{\datestamp}{20180215}
bla bla bla bla bla bla bla
bla bla bla bla bla bla bla
Run Code Online (Sandbox Code Playgroud)

我需要搜索\newcommand{\datestamp}并想用新模式替换附近的模式。

所需的输出文件

bla bla bla bla bla bla bla                                    
bla bla bla bla bla bla bla                                                    
\newcommand{\datestamp}{20180218}                              
bla bla bla bla bla bla bla                             
bla bla bla bla bla bla bla  
Run Code Online (Sandbox Code Playgroud)

反斜杠使这项任务复杂化。我该如何管理?

command-line latex text-processing

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

加入两个文件,在某些列中添加值

像 VLOOKUP 一样匹配另一个文件中 2 列的值后,如何添加另外 2 个值?

示例如下。文件 1 中第 6 和 7 列的值与文件 2 中的第 1 和 2 列匹配时,会将文件 1 中的第 9 和 10 列与文件 2 中第 3 和 4 列的值相加。

文件1.txt

1 1 1 1 1 5 9 1

2 2 2 2 2 7 8 2

3 3 3 3 3 7 7 3

4 4 4 4 4 8 6 4
Run Code Online (Sandbox Code Playgroud)

文件2.txt

5 9 A B

8 6 E F

7 7 G H

7 8 …
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

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

将 CSV 文件中的数字转换为其对应的 URL

我有一个包含两列(和一个标题)的 CSV 文件,其中每个元素都包含 0 到 199 之间的任意数字。我想将它们转换为相应的 URL。下面是一个例子:

41,51
Run Code Online (Sandbox Code Playgroud)

应该变成:

http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/41.jpg,http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/51.jpg
Run Code Online (Sandbox Code Playgroud)

这是我要转换的 list.csv 文件:

$ head list.csv
imageA,imageB
41,51
172,100
99,149
83,72
84,160
186,8
93,198
150,21
63,102
Run Code Online (Sandbox Code Playgroud)

command-line csv text-processing

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

使用 sed 有选择地用引号替换字符串

我有一个文件。

$ cat file
"bar":  false
"foo":  false
Run Code Online (Sandbox Code Playgroud)

我需要替换的单词falsetrue仅在图案"foo": false。问题是引号和空格。

我想到了两种方法:

  1. 在某种 qoutes/双引号中隔离整个模式。
  2. 仅替换前面有“foo”的“false”。

2 个选项的示例尝试:

$ sed -i 's/\(.*foo\)/false/true\1/g' file
Run Code Online (Sandbox Code Playgroud)

它失败了。

command-line sed text-processing

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

删除行范围,但跳过行之间的注释

我有一个包含以下内容的文件:

Windows user
I love windows
Windows 10
# I like it
# I want to keep these two lines
Just started with my job
New to shell scripting as well
New to Mac
Please help!

#EOF
Run Code Online (Sandbox Code Playgroud)

我想删除所有行:

从 " I love windows" 到 " New to shell scripting as well",但保留这些行之间的注释。

因此,所需的输出应如下所示:

Windows user
# I like it
# I want to keep these two lines
New to Mac
Please help!

#EOF
Run Code Online (Sandbox Code Playgroud)

我使用sed命令使用行号删除行范围

sed '2,7d' file …
Run Code Online (Sandbox Code Playgroud)

sed text-processing

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

如何合并两个文件作为替代行?

我知道如何合并两个表以在新文件中打印替代行,但我想将 file1.txt 中的每两行与 file2.txt 中的一行合并。举个例子:

file1.txt 是

A a aa
B b bb 
C c cc
D d dd
Run Code Online (Sandbox Code Playgroud)

和 file2.txt 是

E e ee 
F f ff
Run Code Online (Sandbox Code Playgroud)

我希望有

A a aa
B b bb 
E e ee 
C c cc
D d dd
F f ff
Run Code Online (Sandbox Code Playgroud)

merge text-processing

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

文本文件中的重复行

我需要以特定次数复制文本文件中的行。例如我的数据文件是:

jplg3350.18i
jplg3360.18i
jplg3370.18i
Run Code Online (Sandbox Code Playgroud)

我需要将这些行复制三遍,如下所示;

jplg3350.18i
jplg3360.18i
jplg3370.18i
jplg3350.18i
jplg3360.18i
jplg3370.18i
jplg3350.18i
jplg3360.18i
jplg3370.18i
Run Code Online (Sandbox Code Playgroud)

bash text-processing

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

从文本文件中提取长度固定的数字

我有一个文本文件。该文件包括如下字符和数字:

ANKR00TUR_R_20183240000_01D_30S_MO.rnx:  2018    11    20    00    00    0.0000000     GPS         TIME OF FIRST OBS
brmu3350.14o:  2014    12     1     0     0    0.0000000     GPS         TIME OF FIRST OBS
KNY12040.14o:  2014     7    23     0     0    0.0000000     GPS         TIME OF FIRST OBS
rinex_quantity:grep "TIME OF FIRST OBS" * > time_of_first_epochs
Run Code Online (Sandbox Code Playgroud)

我只需要提取 4 位数字并将它们存储到另一个文件中,如下所示:

2018
2014
2014
Run Code Online (Sandbox Code Playgroud)

我应用了以下代码,但它提取了所有 4 位数字:

grep  -Po "\d{4}" data

2018
3240
2018
0000
3350
2014
0000
1204
2014
0000
Run Code Online (Sandbox Code Playgroud)

text-processing

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

从前面的 csv 文件中移动特定列(按名称选择列)

考虑这个数据:

#!/usr/bin/env bash
cat > example_file.txt <<EOL
group, value, price
1, 3.21, 3.21
1, 3.42, 4.11
1, 3.5, 1.22
2, 4.1, 9.2
2, 4.2, 2.11
EOL
Run Code Online (Sandbox Code Playgroud)

我想将“值”列移到前面:

value, price, group
3.21, 3.21, 1
3.42, 4.11, 1
3.5, 1.22, 1
4.1, 9.2, 2
4.2, 2.11, 2
Run Code Online (Sandbox Code Playgroud)

问题是:列的顺序(甚至列的数量或许多列的名称——除了始终存在的“值”)因文件而异。所以我必须按名称(而不是顺序)选择值列。

我怎样才能做到这一点?

command-line bash csv text-processing

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

标签 统计

text-processing ×10

command-line ×6

csv ×3

bash ×2

sed ×2

latex ×1

merge ×1