首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时提取文本文件中的特定行以及包含特定字符串的多行?

如何同时提取文本文件中的特定行以及包含特定字符串的多行?
EN

Unix & Linux用户
提问于 2017-12-29 08:21:40
回答 3查看 5.1K关注 0票数 4

我有一个文本文件集合,包含比我需要的更多的数据。每个文件的第一行包含一个逗号分隔的字符串,如下所示:

代码语言:javascript
运行
复制
stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,location_type,parent_station,zone_id

然后,在这些键下面是所有的数据。我需要将该数据的一个子集提取到一个新的文本文件中,这样我就可以使用该子集(我不需要所有的数据,它太多了)。

我使用这个命令提取第一行:

代码语言:javascript
运行
复制
sed -n '1p' source.txt > destination.txt

我还使用这个命令提取我需要的特定行:

代码语言:javascript
运行
复制
grep "string" source.txt > destination.txt

挑战在于,当我在同一个脚本中运行这两个命令时(基本上是用一行或&&分隔),grep输出将覆盖sed输出。如何按顺序运行这两种方式,并使两者的组合输出?

我注意到一个类似的问题,它涉及使用一个更复杂的grep命令来定位一行,然后是一系列行。这在这里行不通,因为我需要从每个文件中提取数据的第一行是不同的。

理想情况下,我想编写一个函数,可以针对我需要处理的每个文件运行该函数,但我需要链接这些命令并首先组合它们的输出。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2017-12-29 08:24:58

只需将grep输出更改为附加,

grep "string" source.txt >> destination.txt

票数 8
EN

Unix & Linux用户

发布于 2017-12-29 08:26:53

sed可以同时执行两项工作(打印第一行和包含string的所有行):

代码语言:javascript
运行
复制
sed -n '1p; /string/p' source.txt > destination.txt

或者更长的版本:

代码语言:javascript
运行
复制
sed -n -e '1p' -e '/string/p' source.txt > destination.txt
票数 10
EN

Unix & Linux用户

发布于 2017-12-29 08:48:13

有很多种方法可以做到这一点。您可以使用一个命令获得这两行,如@塞勒斯sed解决方案。下面是几个其他工具可以做到这一点:

代码语言:javascript
运行
复制
awk 'NR==1 || /string/' source.txt > destination.txt
perl -ne 'print if /string/ || $. ==1' source.txt > destination.txt

当然,您也可以运行正在运行的两个命令,只需将第二个命令更改为附加到文件如BANJOSA所建议。或者,您可以将两个命令分组在一个子subshel中,并将子subshell的输出重定向到一个文件中:

代码语言:javascript
运行
复制
(sed -n '1p' file; grep string file) source.txt > destination.txt

代码语言:javascript
运行
复制
{ sed -n '1p' file; grep string file; } source.txt > destination.txt

因此,如果您要做的是利用这些函数,只需将其添加到shell的初始化文件(例如~/.bashrc):

代码语言:javascript
运行
复制
foo(){ sed -n '1p' file; grep string file; } 

现在您可以运行函数foo来执行您想做的事情:

代码语言:javascript
运行
复制
foo source.txt > destination.txt
票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/413614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档