假设我有一行:
Linux is not_ Linux
Run Code Online (Sandbox Code Playgroud)
我的光标位于_标记上,我想将第二个替换Linux为Unix,我该如何在 vim 中做到这一点?
我有一个仅包含 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。
请指导我是否有更好的方法来解决这个问题?我刚开始学习这个脚本。谢谢=)
我正在寻找 sed 命令来将这样的文本“[word1 word2]”替换为空。
我试过
sed -i -e 's/[Word1 Word2]//g'
Run Code Online (Sandbox Code Playgroud)
它不起作用并以混乱的方式替换了我的整个文本。
我想请你帮我替换这些特殊字符。
谢谢你,普尼特。
我在 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 : 没有这样的文件或目录
我知道有些问题可以回答类似的问题,但它们并没有帮助。
大家好。
我在 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(.
在我所有的 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
我有一个由这些行组成的文件:
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) 我想使用 sed'}将行尾的所有内容替换为"}. 我写:
sed -i -e "s/'}$/\"}$/g"
Run Code Online (Sandbox Code Playgroud)
但这将其替换为:"}$。怎么了?如何在我的 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:”后立即转储新行,使主机名在新行之后成为孤立的。
我有这个文件,其中第七个字段是 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)
提前致谢。