【问题标题】:Sed script to find certain lines and replace words用于查找某些行并替换单词的 Sed 脚本
【发布时间】:2016-03-04 05:36:00
【问题描述】:

我需要编写一个 sed 脚本, 在以“/”开头并以“/”结尾的所有行中,任何出现的“perl”到“PERL”。 我可以使用 if 语句吗?

if(行以 /* 开头 & 以 */ 结尾) 用 PERL 替换 perl

这是我的提示

编写一个 sed 脚本,它将执行以下所有操作:

(a) 将所有空白(空格和制表符)减少到一个空格,

(b) 删除所有空白行(没有非空白字符)和

(c) 将所有以“/”开头并以“/”结尾的行(* 不代表通配符)将任何出现的“perl”更改为“PERL”

这是我目前所拥有的

s/^[ ]*$/ /g

/^$/d

我完成了a和b部分,我不知道如何做c部分

【问题讨论】:

  • 你试过什么? sed 没有“if”语句。这不是那种语言。
  • sed '/^\/.*\/$/s/perl/PERL/g' ?
  • 真的需要 sed 吗?您想要以//* 开头的行吗? hyperlink 应该变成 hyPERLink 吗? I am trying to write this in a script, not on the command line. 到底是什么意思?编辑您的问题以包含一些简洁、可测试的示例输入和预期输出,并包含您不希望更改的案例(如果有的话)。
  • @ghoti 的答案比当前的两个答案快了近半小时,这有点好笑,是一个更好、更便携的答案(不依赖于 GNU)...

标签: sed substitution


【解决方案1】:

这可能对你有用(GNU sed):

sed '\#^/.*/$#s/perl/\U&/g' file

第一个地址将以下替换的范围限制为以/ 开头和结尾的行。替换将所有出现的perl 替换为PERL 彻底覆盖这些行。

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多