如何使用 powershell 脚本替换文本文件中的值

2024-01-05

我的文件包含以下数据(无标题)

DEPOSIT ADD     123456789 (VALUE)(VARIABLE) NNNN    VALUEVARIABLE                                                   
DEPOSIT ADD     234567890 (VALUE)(P75)  NNNN    VALUEVARIABLE                                               
DEPOSIT ADD     345678901 (VALUE)(VARIABLE) NNNN    VALUEVARIABLE           

这是一个制表符分隔的文本文件。 总共有 5 列。 (123456789 (VALUE)(VARIABLE) 是单值列)

我的要求是:

  1. 我只需要获取包含的行P75在同一文件中更新。
  2. 获取后我必须替换 Col3、Col4 和 Col5 中的值P75其他行应该不受影响。

from

DEPOSIT ADD     234567890 (VALUE)(P75)  NNNN    VALUEVARIABLE

to

DEPOSIT ADD     234567890 (VTG)(SPVTG)  TCM    VTGSPVTG
  1. 只有包含 P75 的记录才应该这样更新。所有选定记录的替换值都相同。

我写的脚本是

$original_file='C:\Path\20200721130155_copy.txt' -header Col1,Col2,Col3,Col4,Col5,| Select Col3,Col4,Col5

(Get-Content $original_file) |ForEach-Object {

    if($_.Col3 -match '(VALUE)(P75)')
    {
    $_ -replace '(VALUE)(P75)', '(VTG)(SPVTG)' `
       -replace 'VALUEVARIABLE', 'VTGSPVTG' `
       -replace 'NNNN', 'TCM' `
    } 
    $_
    }| Set-Content $original_file+'_new.txt' -Force
 

我得到具有相同内容的输出文件。该文件没有得到更新。

请指教。

Thanks


您可以执行以下操作:

$newfile = "{0}_new.txt" -f $original_file
Get-Content $original_file | Foreach-Object {
    if ($_ -match '\(VALUE\)\(P75\)') {
        $_ -replace '\(VALUE\)\(P75\)','(VTG)(SPVTG)' -replace 'VALUEVARIABLE', 'VTGSPVTG' -replace 'NNNN', 'TCM'
    } else {
        $_
    }
} | Set-Content $newfile -Force

Since -replace使用正则表达式,您必须反斜杠转义特殊的正则表达式字符,例如( and ).

Since $_是当前读取的行Get-Content没有-Raw,你需要输出$_如果你不想做任何改变。如果您确实想替换文本,那么$_ -replace 'regex','text'将输出带有替换文本的该行。


或者,您可以在switch语句,哪个更有效:

$newfile = "{0}_new.txt" -f $original_file
$(switch -regex -file $original_file {
    '\(VALUE\)\(P75\)' {
        $_ -replace '\(VALUE\)\(P75\)','(VTG)(SPVTG)' -replace 'VALUEVARIABLE', 'VTGSPVTG' -replace 'NNNN', 'TCM'
    }
    default { $_ }
}) | Set-Content $newfile -Force
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 powershell 脚本替换文本文件中的值 的相关文章

  • Powershell Invoke-SSHCommand:使用“1”个参数调用“EndExecute”时出现异常

    我正在尝试通过 powershell 中的 Posh SSH 模块连接到 Netscaler SDX 服务器 以搜索特定文件 然后下载它 如果我用 putty 连接到服务器 它就可以工作 然后我可以输入 shell 来打开普通的 bash
  • Powershell 中的反斜杠

    为什么 split 参数的字符串需要两个反斜杠 而 join 参数的字符串只需要一个反斜杠 反引号是 Powershell 中的转义字符 字符前面的反斜杠有什么作用 path C folder test unit1 testing resu
  • 拖放到 Powershell 脚本

    我以为我已经找到了这个问题的答案 但我玩得越多 我就越发现它是 Powershell 的设计缺陷 我想拖放 或使用发送到机制 将多个文件和 或文件夹作为数组传递到 Powershell 脚本 测试脚本 Test ps1 param stri
  • 全局变量用例

    我有几个脚本和模块 它们使用全局变量来完成很多事情 我的日志记录可以采用以下三种形式之一 简洁 详细和验证 没有实际操作的详细日志记录 仅验证提供的数据 我还有许多函数 它们根据运行的上下文 用户或机器 而做出不同的响应 并且正在执行的操作
  • Start-Job 输出去了哪里?

    W gt job start job Write Output hi there throw an error Wait Job W gt job select State Failed HasMoreData True StatusMes
  • powershell:使用参数启动程序的脚本?

    当我运行下面的 Powershell 脚本时 我收到以下错误 如何通过 powershell 带参数运行程序 该脚本将是组策略登录 Invoke Expression 找不到位置参数 接受参数 TBHSERVER NETLOGON BGIn
  • 如何获取管道对象的数量?我不想累积管道来缓冲

    假设我有一些 powershell 代码 function count pipe CmdletBinding param Parameter ValueFromPipeline true object inputObject process
  • Powershell DSC Pull 服务器引发内部错误 - Microsoft.Isam.Esent.Interop 未找到

    我已按照 Powershell org 中的说明进行操作DSC Book http powershell org wp ebooks 设置 http Pull 服务器 Windows 2012 服务器 以与 DSC 一起使用 我设置了 ht
  • 从输出中删除空行

    我有这个脚本 for true Write Host Get Date UFormat Y m d H M S ping n 1 10 10 50 203 Select String SimpleMatch Pinging Context
  • 具有相关动态参数的 PowerShell 函数

    我试图定义一个函数 其中动态参数相互依赖 例如 我可能有 1 个参数和两个动态参数 rootPath 驱动器盘符 rootPathItem 第一个文件夹 在驱动器盘符内 rootPathChildItem 第二个文件夹 第一个之内 问题是
  • 使用 powershell 版本 2 查询 AD

    我们有由 Windows 7 和 Windows 10 组成的混合桌面操作系统 我有一个登录脚本 该脚本从每次用户登录时运行的 powershell 脚本收集各种信息 Windows 7 powershell 仅是版本 2 这意味着我无法使
  • 带有多个附件的电子邮件

    我正在为服务台编写一个 PowerShell 脚本 以便在将 userhome 文件夹从服务器迁移到 NAS 设备时使用 帮助台用户将用户名输入到 userhomelist txt 文件中 我的问题是我无法获取脚本来附加所有日志文件 电子邮
  • Get-AzureStorageBlob 抛出找不到您的 azure 存储凭据

    我刚刚开始使用 Azure 在使用 PowerShell cmdlet 处理我的存储帐户时遇到问题 我已经创建了一个存储帐户并在该存储帐户中创建了一个容器 接下来 我安装了 Azure Powershell SDK 和命令让等 并导入了pu
  • System.IO.FileInfo 的“目标”成员记录在哪里?

    PowerShell 命令行开关Get Item 如果应用于文件 则返回System IO FileInfo type PS C gt item get item c windows System32 atl dll PS C gt ite
  • 如何使用Powershell变量打开Edge?

    我已经尝试过以下方法 edge New Object com microsoft edge application edge visible true edge FullScreen true 但我收到错误 New Object Retri
  • 在 Powershell 中远程启动进程,在 Windows 中获取 %ERRORLEVEL%

    一些背景知识 我试图在测试开始时远程启动和停止一些性能计数器 然后在测试结束时停止它们 我是通过 Win2003 机器上的自动化测试框架执行此操作的 测试框架执行命令时无需启动控制台 某些被测系统正在运行 Win2008 我编写了脚本来根据
  • 在Powershell中传递引用类型参数

    function test1 param System Collections ArrayList x x Add Test1Add write in Test1 x x New Object System Collections Arra
  • 获取在特定日期之后修改的一组文件

    有没有人有一个方便的 powershell 脚本根据修改日期从 TFS 获取一组文件 我想说 给我这个文件夹 或子文件夹 中在 X Y ZZZZ 之后修改的所有文件 并将这些文件转储到它们通常所在的文件夹之外的文件夹中 我知道足够的 pow
  • 如何在 Azure PowerShell 函数中导入模块?

    我尝试从函数查询天蓝色表 使用 Get AzTableRow 在我的笔记本电脑上工作得很好 但模块 aztable 不存在于天蓝色功能中 因此我得到的只是红屏 有办法安装吗 谢谢 大卫 您无需自行在 Azure Function 中安装 A
  • powershell cmdlet 的枚举参数

    我正在 powershell 上编写一个 cmdlet 脚本 我想使用 eum 作为参数之一 但我不知道在哪里放置枚举定义 以便它对于 cmdlet 参数声明可见 例如 我有这样的脚本参数定义 cmdletbinding param Par

随机推荐

  • 使用没有日期的 FullCalendar

    现在 我正在制定课程表 我的想法是设置全日历 https fullcalendar io 查看到agendaWeek仅并格式化其他内容 我不知道如何获取和添加事件的编程方面 因为我不会在此实例中使用任何日期 这是schedule table
  • C++ - 从抽象基指针调用派生函数

    我一直在尝试创建一个基于继承的 TCP 服务器模型 并取得了不同程度的成功 这些服务器由单例管理 其任务是关闭这些服务器和其他简单的维护功能 class TCPServer public TCPServer TCPServer void B
  • 与 Sparklyr 一起使用时,sample_n 真的是随机样本吗?

    我的 Spark 数据框中有 5 亿行 我有兴趣使用sample n from dplyr因为它允许我明确指定我想要的样本大小 如果我要使用sparklyr sdf sample 我首先必须计算sdf nrow 然后创建指定的数据部分sam
  • 如何在 Visual Studio Community 2015 上打开输入文件 C++?

    有谁知道为什么文件打不开 我还尝试将 infile txt 放入程序文件夹和调试文件夹中 但我用来检查打开错误的方法都触发了意味着它无法打开 我知道我可以对位置进行硬编码 但我不想这样做 我听说你应该这样做stringobj c str 但
  • 如何在脚本标签中正确使用 defer/async 属性

    我在所有外部 js 文件中使用 defer 属性运行以下代码 但当我在脚本标记中使用 defer 属性时 Owl Carousel 不会加载 它还显示错误 未定义 如果我从脚本标记中删除延迟属性 一切都会正常工作 没有任何错误 注意 由于某
  • SDK2:Rally Grids 中的链接和列宽

    我以简单的方式显示 Rally Grid 中缺陷的链接 columnCfgs FormattedID Name 这会创建到缺陷的链接 就像它应该的那样 但列宽太大了 但如果我执行以下操作 我就会丢失链接 columnCfgs dataInd
  • JQ 转换为数字,从 shell 变量生成新 json 时转换为布尔值

    我正在尝试生成 json 输出 其中输入来自 shell 变量 happystring Bob Ross unhappynumber1 1942 unhappyboolean true JSON jq n arg happystring h
  • 异步更新 ObservableCollection 项

    我是多线程和 WPF 的新手 我有一个ObservableCollection
  • 如何说服 powershell(通过任务计划程序运行)找到我的网络驱动器?

    我在 Windows 7 上有一个简单的 powershell 脚本 但无法正常工作 这在 XP 上不是问题 get psdrive 当我直接运行它时 我得到 Name Used GB Free GB Provider Root A Fil
  • 囤积内存分配器

    囤积内存分配器 http www cs umass edu emery hoard asplos2000 pdf 我正在阅读有关 Hoard 内存分配器的论文 一切都是可以理解的 但有一件事不是 它如何减少多线程分配或释放内存时引起的堆争用
  • Scala 的 MapLike、ListLike、SeqLike 等与 Map、List、Seq 相比如何?

    有人可以帮我理解 Scala 集合 API 中的各种 Like 特征吗 我一直在阅读并尝试比较每一个 但没有运气 我想我可以看到 Map 例如扩展了 MapLike 添加了 2 个具体方法 但这引出了一个问题 为什么要这样做 为什么 Col
  • Azure 认知服务 OCR 给出不同的结果 - 如何补救?

    Azure CS 有一个 OCR 演示 westcentralus 端点 位于 https azure microsoft com en us services cognitive services computer vision v 18
  • 如何正确地将多个片段添加到片段过渡?

    最近问了一个关于fragment的问题here http stackoverflow com questions 12443312 listview not populating or webview taking up entire sc
  • 如何删除android微调器中的默认值?

    我正在使用 JSON 从数据库中获取值并将它们插入微调器中 该进程正在成功运行 但是当我单击微调器时 我收到了两次微调器提示 如何从微调器中删除第一个默认值 This is snapshot hope you understand my p
  • 如何在 Spring 配置文件中混合使用 CGLIB 和 JDK 代理?

    该线程与我遇到的一个问题有关这里关于访问建议类的受保护方法的需求 https stackoverflow com q 10110253 827480 我正在使用 Spring 3 0 6 并创建了一个 Spring 分析方面 我将其应用于使
  • 从 C++ 调用 dll 函数

    我在 dll 中有一个函数 我想从我的 C 应用程序调用它 该 dll 也是用 C 编写的 并且有一个 def 文件 该文件显示了 dll 中存在的函数 我使用的是 Visual Studio 2010 通过在链接器 附加库目录 中添加 D
  • 地图的联合迭代器?

    Preface 关联 C 容器 例如std map有点像只有一个键列的微型数据库 升压的bimap将其提升为一个两列表 在两列中都进行查找 但这就是类比 没有 polymap 来概括这个想法 无论如何 我想继续将地图视为数据库 现在我想知道
  • 普通 es6 类和扩展 React.Component 有什么区别

    我在用着反应全栈 https github com kriasoft react starter kit作为开始我的项目的脚手架 我发现它的示例代码与官方的 React 文档有很大不同 示例代码是这样的 withStyles styles
  • 当我有 UTC 偏移时如何创建 tzinfo?

    我有一个时区与 UTC 的偏移量 以秒为单位 19800 并且也有字符串格式 0530 我如何使用它们来创建一个tzinfo实例 我调查了pytz 但在那里我只能找到以时区名称作为输入的 API 对于 Python 3 2 或更高版本 您可
  • 如何使用 powershell 脚本替换文本文件中的值

    我的文件包含以下数据 无标题 DEPOSIT ADD 123456789 VALUE VARIABLE NNNN VALUEVARIABLE DEPOSIT ADD 234567890 VALUE P75 NNNN VALUEVARIABL