标签: replace

如何在 VIM 中替换光标位置后的文本

假设我有一行:

Linux is not_ Linux
Run Code Online (Sandbox Code Playgroud)

我的光标位于_标记上,我想将第二个替换LinuxUnix,我该如何在 vim 中做到这一点?

vim replace

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

查找并替换一行文本中的值

我有一个仅包含 1 行文本的文本文件

1314:Battery:1.90:50:30
Run Code Online (Sandbox Code Playgroud)

我想弄清楚是否还有做 agrep并将sed值 50 和 30 更改为以下内容的方法

1314:Battery:1.90:45:35
Run Code Online (Sandbox Code Playgroud)

我将从 50 减少 5,从 30 增加 5。

请指导我是否有更好的方法来解决这个问题?我刚开始学习这个脚本。谢谢=)

grep sed text-processing replace

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

SED 命令将“[Word1 Word2]”替换为空

我正在寻找 sed 命令来将这样的文本“[word1 word2]”替换为空。

我试过

sed -i -e 's/[Word1 Word2]//g'
Run Code Online (Sandbox Code Playgroud)

它不起作用并以混乱的方式替换了我的整个文本。

我想请你帮我替换这些特殊字符。

谢谢你,普尼特。

linux sed regular-expression replace

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

用另一个字符串替换 Linux 文件中的一部分 URL 字符串

我在 Linux 服务器上有一个 HTML 文件,其中包含一长串链接。我正在尝试按如下方式编辑此文件。

查找此类型的原始出现:http://www.test.org/name 将它们替换为:http://www.test.org/archive/name

我怎样才能做到这一点?我试过运行: sed -i -e 's/http://www.test.org/name/http://www.test.org/archive/name/g' user.html

但是我得到以下错误:

sed: 无法打开文件 ww.test.org/name/ http://www.test.org/archive/name/g : 没有这样的文件或目录

我知道有些问题可以回答类似的问题,但它们并没有帮助。

sed string search replace file-search

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

在 Linux 中将 "),(" 替换为 "),\n("

大家好。

我在 MySQL 脚本文件中插入了以下内容作为示例,该文件是从mysqldump没有 GUI 的 Linux Ubuntu Server 中获取的。

INSERT INTO `table` VALUES (AAAA, BBBB, CCCC),(DDDD, EEEE, FFFF),(AAAA, BBBB, CCCC),(DDDD, EEEE, FFFF);
Run Code Online (Sandbox Code Playgroud)

我想替换字符),(),\n(因为括号是特别要替换的。

如何将输入更改),(),\n(.

sed awk replace ed

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

使用 sed 用一行替换多个连续行

在我所有的 python 脚本中,我想替换连续的 2 行

import matplotlib as mpl
mpl.style.use(mpl_plt_default_template)
Run Code Online (Sandbox Code Playgroud)

只用那条线

plt.style.use(mpl_plt_default_template)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经找到了一种方法来用应用于这些行中的每一行的表达式替换 2 个连续的行,但没有找到如何用一行完全替换 2 行。关于我不成功的方法,它应用了以下 sed 字符串:

sed '/import matplotlib as mpl$/N;//s/mpl.style.use(mpl_plt_default_template)/plt.style.use(mpl_plt_default_template)/g'
Run Code Online (Sandbox Code Playgroud)

请注意,第一行 ( import matplotlib as mpl) 也可以出现在文件中的其他位置,并且应该在那里保持不变,因此目标是仅当发现两行都按照给定的顺序紧随其后时才执行替换。

编辑其他范围涉及find

最终目标是find使用类似于以下方式的管道替换通过- 命令找到的几个文本文件中的这两行:

find /path/to/dir/ -type f -exec sed 'old-lines/s/single-new-line' {} \;
Run Code Online (Sandbox Code Playgroud)

系统特性:

操作系统:Lubuntu 20.04 LTS

sed text-processing regular-expression replace

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

如何替换最后一次出现的字符?

我有一个由这些行组成的文件:

199240050;0180209199240050;0
199240241;0180209199240241;0
199240207;0180209199240207;0
199240400;0180209199240400;0
Run Code Online (Sandbox Code Playgroud)

如果最后一个数字是“0”,我应该用“Active”替换它,如果它是“1”,我应该用“Inactive”替换它。

我已经尝试过,sed但行中间出现的“;0”也发生了变化。

它应该在 linux bash 脚本中使用。


我尝试了 DopeGhoti 给出的解决方案,但失败了:

$ sed 's/0$/active/;s/1$/inactive/'  myLines.txt
800600346                078136521                       active
Run Code Online (Sandbox Code Playgroud)

而输入文件的格式不应该改变。

第二种解决方案在末尾附加“;active”,而不替换:

$ awk -F\; 'BEGIN {OFS=";"} { if( $3 == 1 ) { print $1,$2,"inactive" } else { print $1,$2,"active" } }'  myLines.txt
800010654                0295445503                     0;;active
Run Code Online (Sandbox Code Playgroud)

George Vasiliou 的也失败了:

$ awk '$NF?$NF="active":$NF="inactive"' FS=';' OFS=';' myLines.txt
active
active
active
active
Run Code Online (Sandbox Code Playgroud)

text-processing replace

0
推荐指数
1
解决办法
1119
查看次数

如何在sed中表示行的开头和结尾

我想使用 sed'}将行尾的所有内容替换为"}. 我写:

sed -i -e "s/'}$/\"}$/g"
Run Code Online (Sandbox Code Playgroud)

但这将其替换为:"}$。怎么了?如何在我的 sed 中使用正则表达式来表达行的开头和结尾使用^$

sed search regular-expression replace files

0
推荐指数
1
解决办法
102
查看次数

sed 可以在匹配模式后添加新行而不编辑行模式吗?

我需要找到一种方法在模式之后向文件添加一行,但我不想编辑模式所在的行。

例如,我的原始文件看起来像

group: misc
host: server1
job: internal
Run Code Online (Sandbox Code Playgroud)

我想把它变成类似的东西

group: misc
host: server1
role: webserver
job: internal
Run Code Online (Sandbox Code Playgroud)

困难是我需要匹配“主机:”,但主机后面的名称每次都会不同。我还没有找到一种方法让 sed 尊重该行的其余部分,而是在找到“host:”后立即转储新行,使主机名在新行之后成为孤立的。

sed find replace

0
推荐指数
1
解决办法
145
查看次数

使用 awk 将 1 秒添加到 yyyymmddhhmmss

我有这个文件,其中第七个字段是 yyyymmddhhmmss。我需要将这个数字增加一秒。

到目前为止,我已经想出了:

awk 'BEGIN{FS=OFS="|"} $7=$7+1 ' <file> 
Run Code Online (Sandbox Code Playgroud)

它有点工作,但是......如果第七个字段的最后两位数字是“59”,它显然会替换为“60”。

有什么方法可以让 awk 知道该字段是日期,这样我就可以将整个列增加一秒?

当前文件

09099458|1|000|41181|0|0|20221130164738|67
82060649|1|000|36827|0|0|20221130172359|67
Run Code Online (Sandbox Code Playgroud)

预期结果

09099458|1|000|41181|0|0|20221130164739|67
82060649|1|000|36827|0|0|20221130172400|67  <- From 17:23:59 to 17:24:00
Run Code Online (Sandbox Code Playgroud)

提前致谢。

awk time replace

0
推荐指数
1
解决办法
160
查看次数

标签 统计

replace ×10

sed ×7

regular-expression ×3

text-processing ×3

awk ×2

search ×2

ed ×1

file-search ×1

files ×1

find ×1

grep ×1

linux ×1

string ×1

time ×1

vim ×1