当前位置: 首页 > 知识库问答 >
问题:

使用shell命令替换常量开头和结尾字符串之间的随机文本

漆雕疏珂
2023-03-14

如何使用shell替换每行:50K:53B之间的随机文本?

输入为

{:32tyfddf:65 trfdfd :67 ghfdfd :50K:xxxxhh:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50K:yyyyhh:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50K:zzzzz:53B:fg :43:fg $

共有3个答案

彭烨烁
2023-03-14

使用Perl:

perl -pi.bak -e 's/(\:50K).+?(\:53B)/${1}CREDIT${2}/g;' input_file

基本用法:

s/replace_this/with_this/g;

< code>replace this部分中的< code>(\:50K)和< code>(\:53B)在括号中,因为它们是所谓的捕获组。在< code>with_this部分中,您可以将这些捕获组称为< code>${1}和< code>${2}(或< code>\1和< code>\2 ),将< code>CREDIT作为文字替换其间的任何内容(< code >)。?(\:53B) -表示任何字符,无论出现多少次,直到:53B出现)。

被转义,因为它是正则表达式中的元字符。

文件备份将保存到input_file.bak

使用您的输入,输出为:

$ cat input_file
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $

希望有帮助。

支铭晨
2023-03-14
 sed 's/:50K.*:53B/:50KCREDIT:53B/g'

一个基本的sed替换表达式:

S/what_to_look_for/what_to_replace_with/

g的意思是“对行中找到的所有模式执行此操作”(您可能希望跳过此操作)。

用法:通过让sed从stdin中读取来使用sed:

 cat path/to/your_text_file | sed 's/:50K.*:53B/:50KCREDIT:53B/g'

或者通过补充要替换的文本文件作为参数

 sed 's/:50K.*:53B/:50KCREDIT:53B/g' path/to/your_text_file

每个都将替换版本打印到标准输出。两者都不会修改原始文件。

欧阳睿范
2023-03-14

使用awk

awk -F":50K|:53B" '{$2=":50KCREDIT:53B"}8' OFS="" file
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
awk '{sub(/:50K.*:53B/,":50KCREDIT:53B")}8' file
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $

< code>gnuawk

awk '{print gensub(/(:50K).*(:53B)/,"\\1CREDIT\\2","g")}' file
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
{:32tyfddf:65 trfdfd :67 ghfdfd :50KCREDIT:53B:fg :43:fg $
 类似资料:
  • 问题内容: 我有一个包含一些文本后跟空白行的字符串。保留文本内容并从末尾删除空白换行符的最佳方法是什么? 问题答案: 使用方法从字符串的开头和结尾去除空格(空格,换行等)。

  • 在上一节的基础上,我们给脚本加上更新时间及更新人信息: #!/bin/bash # sysinfo_page - A script to produce an HTML file title="System Information for" cat <<- _EOF_ <html> <head> <title> $title $HOSTNAME

  • 我正在尝试尽可能简单地自动化GroupMe机器人。从命令行发送消息的简单方法是使用以下命令: 在Shell脚本中,我想用替换,其中被设置为来自不同命令的输出。这可能吗? 我用不起作用的内容替换了“您的留言”: 任何放在双引号(")内的东西都被视为字符串,所以在这些方面没有做太多尝试。

  • 问题 你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URL Scheme等等。 解决方案 检查字符串开头或结尾的一个简单方法是使用 str.startswith() 或者是 str.endswith() 方法。比如: >>> filename = 'spam.txt' >>> filename.endswith('.txt') True >>> filename.starts

  • 问题内容: 这是我的问题:在一个文本且包含逗号的变量中,我尝试仅删除位于两个字符串(实际上是和)之间的逗号。例如,使用以下字符串: 我知道如何使用整个变量,但是我不能在其中使用它。这个站点上有一些主题,但是我没有针对自己的问题来利用它们,例如: 重复提取文本文件Python中两个定界符之间的行 问题答案: import re Variable = “The sun shines, that’s f

  • 问题内容: 在Go中修剪字符串变量的开头和结尾空白的有效方法是什么? 问题答案: 例如, 输出: