当前位置: 首页 > 面试题库 >

用从另一个文件复制的内容替换文件中的字符串

华衡
2023-03-14
问题内容

我已经弄清楚了,并尝试gsed -i像这样的命令来替换字符串:

gsed -i 's/sdkUniqueKey=""/sdkUniqueKey="123"/g' AppConstants.txt

现在,我想对文件中的另一个字符串执行相同的操作,但正如我的问题所述,我需要先从另一个文件中复制内容,然后替换一个字符串,例如:

gsed -i 's/sdkPrivateKey=""/sdkPrivateKey="contentsCopiedFromAnotherFile"/g' AppConstants.txt

还有一件事,内容(要复制)中有下一行和空白,我想在复制之前将其删除。它还具有反斜杠和正斜杠,希望他们在替换内容时不会造成任何问题)。这是我要复制的内容:

-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNGillPEfz8d7W
0fyJejF9AYeo8OowcdOcxrpzs4IiXCwPEP1MOHAaOwGTdMwSAeQjw9WOYpE1q+DU
I+Zhh4DVUR8dIdYQtXe+oK/QfhVQMJ3AjTKRvhUmFciGwxXlnLBIkN/ePplNdq9Z
Y5DrSR0lE8X2dD+ZRAkQRpsY8TE48b9f443sbsU4sMvNaxd2XTxe2TLYRvB00w6Q
3lqZiKLzttINBCPoCjhJwBdhcF/LHsCmYhfElPqJxH27BTGBOnbICdmazdnChXQg
3hhsbJmnNDe17Spw0lY
-----END PRIVATE KEY-----

我也可以将文件的内容复制到变量中:

contents ="`cat fileToBeRead`"

我所需要做的就是从此字符串中删除空格和换行,并contentsgsed命令中使用此“ ”变量


问题答案:

如果我已正确理解您的问题,则应采取以下措施:

#!/bin/bash

fileToBeRead="key.txt" #Whatever

var=$(tr -d '[:blank:]\n' < $fileToBeRead)
sed -i "s#sdkPrivateKey=\"\"#sdkUniqueKey=\"$var\"#g" AppConstants.txt

由于键包含反斜杠/斜杠,因此您应该对sed使用不同的分隔符(例如#),否则句子将被错误地解析。

编辑:

KEY="$var" perl -pi -e 's/sdkPrivateKey=""/sdkUniqueKey="$ENV{KEY}"/g' AppConstants.txt

perl可以代替sed来避免sed的分隔符问题。在下面查看@DennisWilliamson的评论。



 类似资料:
  • 问题内容: 我有两个文件。其中一个定义了一组数字-值对,如下所示( fileA ): 另一个文件包含一堆值配对,如下所示( fileB ): 我想编写一个脚本,用文件A中的对应数字替换文件B中的值。生成新文件还是更改现有文件B都没有关系。 有任何想法吗?谢谢 问题答案: NR == FNR {a [$ 2] = $ 1; next} =>处理fileA时为true。形成一个关联数组,其中索引是第二

  • 本文向大家介绍linux把一个文件的内容复制到另一个文件的末尾,包括了linux把一个文件的内容复制到另一个文件的末尾的使用技巧和注意事项,需要的朋友参考一下 问题描述: 比如11的文件内容是: hello 22的文件内容是: world 将22的文件内容复制到11文件的末尾,11文件的效果就是: hello world 解决办法: cat 22 >> 11 >>的意思是追加的意思 > 的意思是重

  • 我想在文本文件中用新的英文字符替换突厥语字符{code>{c',c',I',I',G',G',S',S}。 这是我的密码。我在控制台上只获得原始内容,没有任何更改,也不会创建新文件。 编辑: 这是适用于我的新代码。但是我想使用一个较短的代码来替换方法。

  • 问题内容: 我正在使用以下外壳程序脚本将一个文件的内容查找到另一个文件中: 我正在执行脚本,但未显示CSV文件中的内容。我的contents.txt文件还包含CSV文件中的数字,例如或。我的工作有什么问题吗? 问题答案: 本身能够做到。只需使用标志: 是每行包含一个模式的文件;并且是要在其中进行搜索的东西文件。 请注意,即使每行的内容看起来像一个正则表达式,也要强制将每行视为一个模式,您应该使用f

  • 问题内容: 我正在寻找一种替换文件中的字符串而不将整个文件读入内存的方法。通常我会使用Reader和Writer,例如以下内容: 但是,我想就地进行替换,并且不认为可以同时在同一文件上打开Reader和Writer。另外,我正在使用Java 1.4,因此无法访问NIO,扫描仪等。 谢谢唐 问题答案: 通常无法对文件进行“就地”替换,除非替换的长度与原始长度完全相同。否则,文件将需要增大,从而将所有

  • 问题内容: 我是shell脚本的新手,并且对如何使用字符串或其他工具替换文本文件中的第一行感到困惑。这是文本文件的内容: 我想将第一行(电影文件路径)替换为just (可能是shell脚本中的变量) 请指导我如何执行此操作。我遇到了一些帖子,我需要在这里使用吗? 问题答案: sed是正确的工具,请尝试执行以下操作: 说明 平均第一行 剩下的就是替换:我们用变量替换所有(。*)