AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[replace](unix)

Martin Hope
Zoltan King
Asked: 2022-05-04 06:04:15 +0800 CST

如何在整个文件的每一行中替换特定上下文中的字符?

  • 13

我有一个大文件,其中包含以下形式的数百个英语短语:

\phrase
{.   .    .     *     *   }
{I shoul-d've stayed home.}
{aɪ ʃʊd‿əv ˈsteɪd ˈhoʊm.} <- only replace on this line

\phrase
{ .   .   *  }
{Did you eat?}
{dɪdʒjʊʷˈit? ↗} <- only replace on this line

\phrase
{ *    .  *    .    *  .  .    .     *   .  }
{Yeah, I made some pas-ta if you're hun-gry.}
{ˈjɛə, aɪ ˈmeɪd səm ˈpɑ stəʷɪf jər ˈhʌŋ gri.} <- only replace on this line

这是一个 LaTeX.tex文件。我想用符号(十六进制代码)替换r每个音标中的所有字符(通过音标,我的意思是每行后的第三行)。\phraseɹU+0279

在 Emacs 中手动操作对我来说很麻烦。我想知道是否有办法以某种方式定位这些行并自动进行替换。

所有r字符都必须替换为ɹ,也不例外,但仅在拼音r中,在英文/非拼音文本中保持原样。

是否可以通过使用脚本或其他方式以某种方式做到这一点?我的文档中没有换行符,所以转录总是在\phrase​​ . 谢谢!

text-processing replace
  • 8 个回答
  • 1624 Views
Martin Hope
Tobitor
Asked: 2021-12-07 07:03:52 +0800 CST

Ansible - 替换文件中某些表达式的第一次出现 - 路径包括主机名

  • 0

我需要替换特定文件中某个字符串的第一次出现。

我考虑为此使用 Ansible 的替换模块。

- hosts: abc
  tasks:
  - name: Replace first occurence of specific string
    replace:
      path: /etc/config/abc_host/application.yml
      regexp: 'Unix'
      replace: "Linux"

这将替换此特定 .yml 文件中所有出现的Unixwith 。Linux但我也有一些其他主机(def_host、ghi_host 等),我只想将第一次出现的Unixwith替换为Linux.

所以,有两个问题需要解决:

首先,使用主机名作为路径中的变量。而不是硬编码 abc_host.yml 我想要类似path: /etc/config/($host)_host/application.yml.

其次,我只想替换特定字符串的第一次出现(而不是任何其他后续出现的字符串)。

ansible replace
  • 1 个回答
  • 262 Views
Martin Hope
Jakub Grula
Asked: 2019-11-07 11:34:39 +0800 CST

翻译lua文件中的文本

  • 0

问题是,我正在将游戏从英语翻译成波兰语。我要翻译的文本在 lua 文件中。我已经翻译了大部分游戏,但我正在寻找一种方法来自动将英语文本替换为波兰语文本。我有一些 lua 文件(非常大),其中包含要翻译的代码和文本,我有.txt包含英语句子的文件,我想在 lua 文件中替换它们,我有相同数量的其他 txt 文件,其中包含波兰语中逐行(以相同顺序)的句子。我需要一个脚本的帮助,该脚本将从 中获取第一行english.txt,在 lua 中搜索它,如果找到,将其替换为第一行polish.txt,然后从english.txt等。我尝试了很多应用程序,但没有一个有这个功能。有人建议我使用awk,grep或sed,但我不知道如何将它们用于我的目的。

编辑:对不起。我忘记了旧文件是.lua。现在是 .sjson

replace
  • 1 个回答
  • 958 Views
Martin Hope
G_Diggity
Asked: 2019-04-30 12:11:41 +0800 CST

为什么我的多行 perl 字符串替换添加了一个空行?

  • 0

我正在尝试用单独的文本文件的内容替换文本文件(具有未知数量的子元素的 XML 元素)中的多行。我已经设法让替换主要使用 perl 工作,但它在它替换的字符串之后插入了一个额外的空白行,我想摆脱它。有关显示 perl 命令以及输入和替换文件的代码,请参见下面的代码。

有人知道如何防止出现额外的空行吗?如有必要,我愿意使用除 perl 之外的其他工具。

==> cat test.xml
<root>
<values>
<value>1</value>
<value>2</value>
<value>3</value>
</values>
</root>
==> cat replace.xml
<values>
<value>4</value>
<value>5</value>
</values>
==> perl -i -p0e 's;<values>.*<\/values>;`cat replace.xml`;sge' test.xml
==> cat test.xml
<root>
<values>
<value>4</value>
<value>5</value>
</values>

</root>
==> 
perl replace
  • 2 个回答
  • 625 Views
Martin Hope
Abdillah
Asked: 2019-01-06 02:44:29 +0800 CST

如何使用 tr 将双新行替换为单行?

  • 0

给定一个文本,

$ cat a.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at magna sed libero accumsan ultrices. Proin varius tortor risus, at pulvinar quam auctor 
vitae.


Etiam iaculis ipsum quis lacus convallis finibus. Nunc fermentum, nunc sit amet egestas congue, odio quam sollicitudin velit, quis venenatis augue 
nibh sed tortor.

我无法使用此命令删除双空行。

$ tr '\n\n' '\n' < a.txt 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at magna sed libero accumsan ultrices. Proin varius tortor risus, at pulvinar quam auctor 
vitae.


Etiam iaculis ipsum quis lacus convallis finibus. Nunc fermentum, nunc sit amet egestas congue, odio quam sollicitudin velit, quis venenatis augue 
nibh sed tortor.

用其他 char 作品替换单个新行,是不是很奇怪?

replace newlines
  • 1 个回答
  • 1658 Views
Martin Hope
Sammy
Asked: 2018-10-12 19:28:42 +0800 CST

使用 sed 将带有单个空格的句点替换为带有双空格的句点 [重复]

  • 0
这个问题在这里已经有了答案:
在一个文件的一段时间后搜索并将1个或多个空格替换为2个空格[关闭] 2个答案
4年前关闭。

你会给出什么命令来打印(显示在屏幕上)userNotes.txt 的更正文本,其中所有句子结尾在下一个句子开始之前都需要两个空格?

这是我试图用 回答的问题sed,但我尝试的每一次尝试都是错误的。我可能遗漏了一些东西,但我觉得应该工作的代码是:

sed 's/\. /\.  /g' userNotes.txt

它有效,但我认为在这种情况下无效。错误响应给了我:

不,不是这样。
例如,您列出的命令
    所有会话都具有这些特征的三个步骤。如果您在您是唯一注册用户的 PC 上工作,您可以登录
我期待的地方
    所有会话都具有这些特征的三个步骤。如果您在您是唯一注册用户的 PC 上工作,您可以登录

我的两个空间太大了。这应该是一个简单的答案,但我不相信它会比这更简单。我也不能使用诸如[[:space:]]awk 之类的东西。只是基本的 sed 编辑。

sed replace
  • 1 个回答
  • 3903 Views
Martin Hope
user308606
Asked: 2018-09-05 09:14:30 +0800 CST

同时替换文本文件中的两种模式[重复]

  • 2
这个问题在这里已经有了答案:
使用 sed 干净地交换两个字符串的所有出现 (3 个答案)
4年前关闭。

我有一个包含数字的文本文件,如下所示:

34 77 1716 150?.2 67.5892 11.9691 23 1?6 83
35 78 0 0 0 0 0 0 0
36 79 0 0 0 0 0 0 0
37 80 0 0 ? ? 0 0 0
38 81 0 0 0 ? 0 0 0
39 82 0 0 0 0 ? 0 ?
40 85 169 152.8 81.5917 22.3759 18 118 100
41 251 1412 131? 97.7358 16.6563 37 126 89
42 252 578 488.5 88.?502 23.9728 29 124 95
43 253 585 518.6 95.4444 19.6661 19 119 100
44 254 576 533.2 96.4271 18.5693 13 119 106
45 255 1424 1313.3 94.7584 21.7414 14 146 132

我想同时替换 every ?with0和 every 0with ?,所以上表如下所示:

34 77 1716 15?0.2 67.5892 11.9691 23 106 83
35 78 ? ? ? ? ? ? ?
36 79 ? ? ? ? ? ? ?
37 8? ? ? 0 0 ? ? ?
38 81 ? ? ? 0 ? ? ?
39 82 ? ? ? ? 0 ? 0
4? 85 169 152.8 81.5917 22.3759 18 118 1??
41 251 1412 1310 97.7358 16.6563 37 126 89
42 252 578 488.5 88.05?2 23.9728 29 124 95
43 253 585 518.6 95.4444 19.6661 19 119 1??
44 254 576 533.2 96.4271 18.5693 13 119 1?6
45 255 1424 1313.3 94.7584 21.7414 14 146 132

我该怎么做?

replace text
  • 3 个回答
  • 290 Views
Martin Hope
Mike
Asked: 2018-08-29 01:35:24 +0800 CST

匹配列时用另一个文件的内容替换一个文件中的字符串

  • -2

我有两个文件,例如:

文件 1:

a stringori to replace, this stringori comme again 
other stringori2 to replace, stringori2 commes again
...

文件 2:

stringori newstring
stringori2  newstring2
...

我想得到结果:

a newstring to replace, this newstring comme again 
other newstring2 to replace, newstring2 commes again
text-processing replace
  • 1 个回答
  • 193 Views
Martin Hope
Vaillancourt
Asked: 2018-07-21 08:56:31 +0800 CST

如何替换 SVN 转储分支名称中的空格字符?

  • 2

我想用下划线 ( ) 替换分支名称中的空格 ( ) 字符_。例如,假设我有一个sedtest文件,其中包含:

Node-path: trunk/
Node-path: trunk/src/lib 0
Node-path: trunk/src/lib 0/bla.txt
Node-path: branches/ branch0-blabla_blabla/src
Node-path: branches/ branch0-blabla_blabla
Node-path: branches/branch1 stuffthing
Node-path: branches/branch1 stuffthing/src/lib 0
Node-path: branches/branch1 stuffthing/src/lib 0/bla.txt
Node-path: branches/branch2stuffthing/src/lib 0/bl a.txt

我希望它像这样修改:

Node-path: trunk/
Node-path: trunk/src/lib 0
Node-path: trunk/src/lib 0/bla.txt
Node-path: branches/_branch0-blabla_blabla/src
Node-path: branches/_branch0-blabla_blabla
Node-path: branches/branch1_stuffthing
Node-path: branches/branch1_stuffthing/src/lib 0
Node-path: branches/branch1_stuffthing/src/lib 0/bla.txt
Node-path: branches/branch2stuffthing/src/lib 0/bl a.txt

我遇到的问题与此 SO question中描述的问题类似。但是,该问题要求替换路径中的所有空格。我只想替换分支名称中的空格。

从另一个问题,我已将sed命令修改为:

sed '/^Node-path: branches\//s/ /_/2' < sedtest

但它也将最后一行修改为Node-path: branches/branch2stuffthing/src/lib_0/bl a.txt,应该保持不变。我的经验sed非常有限,我无法将“搜索区域”适当地限制在branches/以下之间/或之间$,以先到者为准。我正在使用 CentOS 7。

至于我要完成的工作:我正在尝试将我们的 SVN 存储库移植到 git 上,根据SO 上的这个答案和我的个人经验,git 分支名称中不能有空格。我正在尝试按照svnbook.red-bean.com 上的建议通过 svn 转储来解决此问题。

我想我可以 grep 所有有问题的分支并手动替换字符串,但这会不那么通用,工作量更大,而且娱乐性也少得多。

replace
  • 3 个回答
  • 421 Views
Martin Hope
forthrin
Asked: 2018-03-30 10:28:02 +0800 CST

递归目录中的快速字符串替换

  • 0

如何使用带有空格和单引号的递归目录和文件名进行快速文本替换?最好使用标准 UNIX 工具,或者使用众所周知的软件包。

使用find对于许多文件来说非常慢,因为它为每个文件生成一个新进程,所以我正在寻找一种将目录遍历和字符串替换集成为一个操作的方法。

慢搜索:

find . -name '*.txt'  -exec grep foo {} \;

快速搜索:

grep -lr --include=*.txt foo

慢换:

find . -name '*.txt' -exec perl -i -pe 's/foo/bar/' {} \;

快速更换:

# Your suggestion here

(这个相当快,但是是两次通过并且不处理空格。)

perl -p -i -e 's/foo/bar/g' `grep -lr --include=*.txt foo`
replace recursive
  • 3 个回答
  • 1576 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve