首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用固定模式替换文本文件中的多行

问用固定模式替换文本文件中的多行
EN

Unix & Linux用户
提问于 2017-05-07 23:42:22
回答 2查看 572关注 0票数 2

好吧,找个快速的方法来做这个。我有一个需要在文本文件中更改的行号列表。该行上的16位模式可以是任何东西,但我需要更改它,使其仅基于行号来读取XXXXXXXXXXXXXXXX。同样,我有一长串行号,我知道需要修改。需要改变的线条没有明显的模式。(我没有编写数据模式,但我知道需要更改哪些行来读取所有X。)我在这里读了很多答案,但没有一个能真正解决这个问题。

如果不清楚,我换个说法.

更改文件中的26115、32198、37256、40001、40023行以读取XXXXXXXXXXXXXXX。我有超过10万行需要在190万行文件中修改。

EN

回答 2

Unix & Linux用户

发布于 2017-05-07 23:51:53

sed或awk都能很好地完成这项任务。

代码语言:javascript
复制
sed '
    26115 s/.*/XXXXXXXXXXXXXXX/
    32198 s/.*/XXXXXXXXXXXXXXX/
    37256 s/.*/XXXXXXXXXXXXXXX/
    40001 s/.*/XXXXXXXXXXXXXXX/
    40023 s/.*/XXXXXXXXXXXXXXX/
'
代码语言:javascript
复制
awk '
  NR==26115 || NR==32198 || NR==37256 || NR==40001 || NR==40023 {$0 = "XXXXXXXXXXXXXXX"}
  1
'

(在前面的代码执行可能的转换之后,孤独的1会打印所有的行。)

票数 2
EN

Unix & Linux用户

发布于 2017-05-08 06:35:16

代码语言:javascript
复制
sed -e '1{x;s/^/XXXXXXXXXXXXXXX/;x;}
   26115bp
   32198bp
   37256bp
   40001bp
   40023bp
   d
   :p
   g
' data_file

我们首先使用所需的模式XXXXXXXXX填充保持空间,然后通过跳到标签:p来回忆,只有对于所需的行号:p将检索持有空间,然后隐式地将其转入stdout。不匹配的行将被删除(如果希望保留这些行,请将d更改为b )。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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