字符串修剪和分割

2024-01-30

我有一个我读取的文本文件,我需要从中获取值。

文本文件示例:



[Site 01]
DBServer=LocalHost
DBName=Database01
Username=admin
Password=qwerty

[Site 02]
DBServer=192.168.0.10
DBName=Database02
Username=admin
Password=qwerty
  

目前,我的代码读取文件并将每个文件作为每行的数组条目DBServer=找到了,这个文本文件可以有很多站点:

$NumOfSites = Get-Content $Sites |
              Select-String -Pattern "DBServer=" -Context 0,3
$i = 0
$NumOfSites | ForEach-Object {
    $svr  = $NumOfSites[$i] -isplit "\n" |
            % { ($_ -isplit 'DBServer=').Trim()[1] }
    $db   = $NumOfSites[$i] -isplit "\n" |
            % { ($_ -isplit 'DBName='.Trim())[1] }
    $uid  = $NumOfSites[$i] -isplit "\n" |
            % { ($_ -isplit 'Username='.Trim())[1] }
    $pswd = $NumOfSites[$i] -isplit "\n" |
            % { ($_ -isplit 'Password='.Trim())[1] }
    $i = $i+1
}

如果没有一些额外的空格或一些很好的字符串变量,我无法正确分割每个属性。 我只需要从我拥有的文件示例的格式中提取信息以将其作为变量放入 SQL 连接行中。


除了记录标题之外(即[Site 01])其余部分可以通过以下方式处理ConvertFrom-StringData正好。我们可以将记录转换为直接在标题行上或多或少分割的对象。ConvertFrom-StringData将多行字符串转换为哈希表,您可以将其转换为[PSCustomObject]和中提琴,你有易于使用的物品。

$NumOfSites = Get-Content $Sites -raw
$SiteObjects = $NumOfSites -split '\[.+?\]'|%{[PSCustomObject](ConvertFrom-StringData -StringData $_)}

然后你就可以操纵$SiteObjects但是您认为合适(如果需要,可以输出到 CSV,或者使用Select-Object)。或者,如果您想要建立连接,您可以循环遍历它,根据需要建立连接......

ForEach($Connection in $SiteObjects){
    $ConStr = "Server = {0}; Database = {1}; Integrated Security = False; User ID = {2}; Password = {3};" -f $Connection.DBServer.Trim(), $Connection.DBName.Trim(), $Connection.Username.Trim(), $Connection.Password.Trim()
    <Do stuff with SQL>
}

Edit:更新我的答案,因为示例文本已更改为添加<pre> and </pre>。我们只需要删除这些,并且由于 OP 收到有关 null 值的方法的错误,我们也会过滤 null。

$NumOfSites = Get-Content $Sites -raw
$SiteObjects = $NumOfSites -replace '<.*?>' -split '\[.+?\]' | ?{$_} |%{[PSCustomObject](ConvertFrom-StringData -StringData $_)}
ForEach($Connection in $SiteObjects){ 
    $svr = $Connection.DBServer.Trim() 
    $db  = $Connection.DBName.Trim() 
    $uid = $Connection.Username.Trim() 
    $pwd = $Connection.Password.Trim()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串修剪和分割 的相关文章

  • 使用 Javascript 解析文本

    我正在尝试使用 Javascript 来解析在文本框中输入的文本 这将结合各种用户生成的变量来创建随机活动 看看这个例子可能更有意义 一些示例输入可能是 Activity Home Out Home Read book for time C
  • 当第二个参数包含运算符号时,为什么 ltrim 会删除一个字符? [复制]

    这个问题在这里已经有答案了 If I do ltrim 53 34567 53 ltrim 53 34567 53 ltrim 53 34567 53 I get 4567作为结果而不是34567 这种行为的解释是什么 ltrim 53 3
  • 如何在 powershell 中显示带有 .ps1xml 文件的嵌套集合

    我有一个像这样的分层对象结构 public class Department public string Name get set public string Manager get set public Employee Employee
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 无论如何要抓取重定向的链接吗?

    无论如何 我可以让 python 单击一个链接 例如 bit ly 链接 然后抓取生成的链接吗 当我抓取某个页面时 我唯一可以抓取的链接是重定向的链接 它重定向到的位置就是我需要的信息所在的位置 重定向有 3 种类型 HTTP 作为响应标头
  • Pester 没有捕获抛出的错误

    当我运行以下纠缠测试时 我希望它能够捕获预期的错误 但事实并非如此 但是 当我使用不同的函数和不同的 throw 语句运行测试时 它会起作用 纠缠测试 Describe Remove GenericCredential Function T
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 有没有办法在 MS Windows(Powershell 或 CMD)的 ripgrep 中转义引号?

    我想找一个字符串 Hello Hello 以双引号开头 在文本文件中使用ripgrep 通常 在 Bash 或 ZSH 中 这可以通过用反斜杠转义或用单引号括起来来实现 rg Hello rg Hello 然而 在 MS Windows P
  • 如何从 -WhatIf 处理中排除块?

    我正在编写一个 Powershell cmdlet 它需要执行命令并将其 stderr 输出存储到临时文件中以供以后处理 此输出列出了 cmdlet 稍后可能使用的 COM 端口 mostly side effect free inform
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • .Net 中是否有与 HTML 等效的 XmlReader?

    我用过Html敏捷包 http html agility pack net z codeplex过去在 Net 中解析 HTML 但我不喜欢它只使用 DOM 模型 在大型文档和 或具有大量嵌套的文档上 可能会遇到堆栈溢出或内存不足异常 另外
  • 获取 Parse Analytics 自定义仪表板

    是否可以使用 Javascript 或 REST API 从 Parse 获取应用程序分析 我想在我自己的仪表板中显示下载数量和自定义事件 不可以 您只能通过 REST API 推送 https parse com docs rest ht
  • 在 JAVA 中使用 SAX 解析器从 XML 文件中提取文本节点

    因此 我目前正在使用 SAX 尝试从我正在处理的大量 xml 文档中提取一些信息 到目前为止 提取属性值确实很容易 但是 我不知道如何从文本节点中提取实际值 例如 在给定的 XML 文档中
  • 将 Powershell 输出转换为 Markdown 文件

    我有以下代码 xmlFile C Users kraer Desktop bom xml xml xml Get Content xmlFile xml bom components component ForEach Object fin
  • 需要使用 pyparsing 制作递归解析器的帮助

    我正在尝试使用 python pyparsing 进行解析 我在制作递归解析器时陷入困境 让我解释一下问题 我想要计算元素的笛卡尔积 语法是 cross elements element 我用更具体的方式 cross a c1 or cro
  • Powershell 将单个字符串与多个正则表达式匹配?

    除了依次迭代每个正则表达式之外 是否有一种更 powershelly 的方式将单个字符串与正则表达式的数组 集合进行匹配 我真正想做的是这样的 database Name match includeRegexArray 考虑到 Powers
  • C# 中的编译器

    我正在寻找一个可定制的解析器和 或词法分析器 它可以让我在 C 中构建自定义语法检查器 本质上 用户将输入一行代码 自定义 语法检查器将能够响应是否编写正确 That s Irony http irony codeplex com 请务必阅
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • 将带有星号的注册表项传递给测试路径

    我想通过以下方式运行此注册表路径Test Path在 PowerShell 中 但它包含一个星号 该星号在注册表中有效 但在 Windows 路径中无效 问题是 当我通过它时 Test Path将星号视为通配符 因此这需要非常非常长的时间

随机推荐

  • ./executable 和 ./executable 之间的区别可执行文件

    在 shell 中 有什么区别 executable and executable 在第一个中 点是快捷方式source http linux about com library cmd blcmdln source htm正确的 那么两者
  • 'git reset --hard HEAD~1' 和 'git reset --soft HEAD~1' 之间有什么区别?

    我试图撤消 git 中的提交 使用有危险吗git reset hard HEAD 1 不同选项之间有什么区别git reset git reset确实知道五种 模式 软 混合 硬 合并和保留 我将从前三种开始 因为这些是您通常会遇到的模式
  • Python中的邻接表和邻接矩阵

    你好 我理解邻接表和矩阵的概念 但我对如何在Python中实现它们感到困惑 实现以下两个示例的算法可以实现 但从一开始就不知道输入 因为他们在示例中对其进行了硬编码 对于邻接表 a b c d e f g h range 8 N b 2 c
  • JavaMail 无法在 Amazon EC2 上运行

    PROBLEM 我正在尝试使用 JavaMail 从 EC2 Ubuntu 12 04 服务器发送电子邮件 但它不起作用 背景 我打算从 Tomcat 服务器向一些团队成员发送自动生成的邮件 我使用 JavaMail 1 4 7 来完成这项
  • 生成多个相同的精灵

    我目前正在开发一款名为 Table Wars 的游戏 这是一款适合两名玩家的回合制策略游戏 进展一直很顺利 直到我遇到了产卵单位的问题 该程序不会产生多个相同的单位 也不会在旧的单位死亡后重生新的单位 以下是一些可能有帮助的信息 每个类都存
  • 在 UIImagePickerController 中隐藏快门

    我在 iPhone 应用程序中为相机视图设计了虹膜快门动画 不幸的是 即使我隐藏相机控件并创建自定义的cameraOverlayView 当视图出现时似乎也无法隐藏Apple的快门 当视图出现时 我使用 UIImagePickerContr
  • SQL - 提高 NOT EXISTS 查询性能

    有没有办法可以提高这种 SQL 查询性能 INSERT INTO WHERE NOT EXISTS Validation 问题是当我的表中有很多数据 例如数百万行 时 执行WHERE NOT EXISTS子句如果很慢 我必须进行此验证 因为
  • Keycloak :REST API调用通过管理员用户名和密码获取用户的访问令牌

    我有一个要求 我需要获取用户的访问令牌 我知道管理员用户名和密码 因此可以获得管理员的访问令牌 是否有任何 REST API 可以为我提供使用上述数据的用户访问令牌 有两种方法可以获取访问令牌 一种带有 Rest 客户端 keycloak
  • 如何使用 onclick 提交 Rails AJAX 表单

    如何使用按钮在 Rails 中提交 AJAX 表单 My Code Controller def list events ExternalEvent all if params city id nil events events where
  • 使用 Python 从 PowerPivot 模型中提取原始数据

    当我必须使用 Python 从 PowerPivot 模型中读取一些数据时 看似微不足道的任务变成了真正的噩梦 我相信在过去的几天里我已经对此进行了很好的研究 但现在我遇到了困难 并且希望得到 Python SSAS ADO 社区的一些帮助
  • 如何将协程添加到正在运行的异步循环?

    如何将新的协程添加到正在运行的 asyncio 循环中 IE 已经在执行一组协程的一个 我想作为一种解决方法 可以等待现有协程完成 然后初始化一个新循环 使用附加协程 但还有更好的办法吗 要将函数添加到已经运行的事件循环中 您可以使用 as
  • Cocoa:NextKeyView - Tab 键顺序

    在我的可可应用程序中 我想更改控件的选项卡顺序 以便我可以从文本字段切换到按钮 我确实将文本字段的 nextKeyView 属性与按钮连接起来 但它似乎根本没有效果 我已经激活了键盘的适当系统设置 因此我现在可以使用 Tab 键切换到所有控
  • 如何使特定的 UITableViewCell 在屏幕上可见,同时 UITableView 中有更多行

    我在表视图中有 20 行 并且我在一半屏幕中设计了 或者说调整了大小 UITableView 使用 IB 并在一半屏幕中显示了与特定 UITableViewCell 相关的内容 哪个单元格的详细信息将显示在半屏中是运行时决定的 我希望在加载
  • Groovy 字符串与 Java 字符串

    我有一个用其他字符串制作的 groovy 字符串 例如 def final PREFIX myprefix def prefix2 PREFIX whatever1 现在假设我有一个HashMap我想使用进行查找prefix2作为密钥的一部
  • 分页是否适用于具有 method="POST" 的表单?

    由于 URI 请求太大 浏览器无法处理 我将高级订单表单从 GET 切换为 POST 一切工作正常 除了遗嘱分页之外 它不断将页面添加到 url 本身http localhost 3000 orders advanced search li
  • Symfony 2.8 文件上传“无法从类型对象读取索引“...”,因为 Entity 未实现 ArrayAcces。”

    我的 editAction 有问题 当我尝试编辑一些产品时 我得到了 无法从类型的对象读取索引 marka ShoeShopBundle Entity Buty 因为它没有实现 ArrayAccess 早些时候我得到 表单的视图数据应该是类
  • FLUTTER:软件包安装错误:SAMSUNG 上失败 [INSTALL_FAILED_INSUFFICIENT_STORAGE]

    我使用 Android Studio 设置了 Flutter 环境 在修复了许多不可想象的问题后 我终于可以在模拟器上运行第一个示例应用程序 但这不会在我的手机上运行 存储空间不足的错误如下所示 Launching lib main dar
  • iPhone/iOS 上的通用 LISP

    是否可以致电Common LispiOS 中的功能 如果是这样 是否可以在动态库中创建它 这取决于您调用 CL 函数的含义 但 ECL 很可能是您的最短路径 从这里开始 因为 ECL 有一个补丁可以更好地适应 iOS http funcal
  • Docker - 无法挂载本地卷,没有这样的文件或目录

    我有一个 docker compose 工作了很长时间然后突然停止了 我正进入 状态 挂载本地卷失败 没有这样的文件或目录 这已经工作了几个月 并在几周前开始出现错误 docker compose 位于源代码管理中 我可以看到它没有改变 我
  • 字符串修剪和分割

    我有一个我读取的文本文件 我需要从中获取值 文本文件示例 Site 01 DBServer LocalHost DBName Database01 Username admin Password qwerty Site 02 DBServe