以 UTF8 保存时,如何防止带有设置内容的额外换行符,同时保留现有换行符?

2023-11-22

我有一个小的 powershell 脚本,它读取 UTF8 编码的文档,在其中进行一些替换并将其保存回来,如下所示:

(Get-Content $path) -Replace "myregex","replacement" | Set-Content $path2 -Encoding utf8

这将创建一个具有正确编码和正确内容的新文件,但末尾有额外的换行符。根据这个答案和许多其他人,我被告知要:

  1. 添加参数-NoNewLine to Set-Content
  2. Use [System.IO.File]::WriteAllText($path2,$content,[System.Text.Encoding]::UTF8)

两种解决方案都删除了尾随的新行......以及文件中的所有其他新行.

有没有办法both:

  1. 保存文件时删除尾随的新行。
  2. 将现有的新行保留在我的文件中。

[IO.File]::WriteAllText()假设$content是单个字符串,但是Get-Content生成一个字符串数组(并删除每行/字符串末尾的换行符)。将该字符串数组重整成单个字符串,使用以下方法连接字符串$OFS字符(参见here).

为了避免这种行为,您需要确保$content当它被传递到时已经是一个字符串WriteAllText()。有多种方法可以做到这一点,例如:

  • Use Get-Content -Raw(PowerShell v3 或更高版本):

    $content = (Get-Content $path -Raw) -replace 'myregex', 'replacement'
    
  • 通过管道输出Out-String:

    $content = (Get-Content $path | Out-String) -replace 'myregex', 'replacement' -replace '\r\n$'
    

    但请注意,Out-String(就像Set-Content)添加了一个尾部换行符,正如评论中指出的那样。您需要通过第二次替换操作将其删除。

  • 将数组加入-join操作员:

    $content = (Get-Content $path) -replace 'myregex', 'replacement' -join "`r`n"
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 UTF8 保存时,如何防止带有设置内容的额外换行符,同时保留现有换行符? 的相关文章

  • 如何使用 PowerShell 检查文件是否早于特定时间?

    我怎样才能办理登机手续电源外壳查看 fullPath 中的文件是否早于 5 天 10 小时 5 分钟 老 我的意思是如果创建或修改不晚于 5 天 10 小时 5 分钟 这是一种非常简洁但易读的方法 lastWrite get item fu
  • 为什么不允许 UTF-8 作为“ANSI”代码页?

    窗户 setmbcp https web archive org web 20100108193149 http msdn microsoft com en us library 883tf19a VS 80 aspx函数允许任何有效的代码
  • 使用 powershell 从 Tfs 获取工作项存储

    如何使用 powershell 从 TFS 获取 WorkItemStore 我尝试过以下方法 function get tfs param string ServerName http MyServer 8080 tfs begin pr
  • 如何在 PowerShell 中创建数组的数组?

    我想在 PowerShell 中创建一个数组的数组 x 1 2 3 4 5 6 效果很好 然而 有时我的数组列表中只有一个数组 在这种情况下 PowerShell 会忽略以下列表之一 x 1 2 3 x 0 0 Should return
  • 带有note属性的字符串可以修改吗

    有没有什么方法可以修改字符串而不丢失它所具有的任何注释属性 t something Add Member noteproperty one 1 PassThru t one 1 t else t one
  • 写入输出-InputObject(,'测试')-NoEnumerate

    我认为这是一个仅适用于 PowerShell Windows 5 1 的错误 The NoEnumerate当通过命名提供输入时 开关不起作用 InputObject争论 以下函数返回False Function Test Write Ou
  • 使用 ICACLS 将文件权限设置为“只读”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我很难从简单 直观的方式转变过来chmod 400尝试在 Windows 命令提示符中执行相同的操作ICACLS 与 UNIX LINUX
  • 基于团体成员资格的额外输出

    我希望你们都度过愉快的一天 如果这是一个糟糕的问题尝试 我提前道歉 我不太擅长这个 介绍 首先 我想介绍一下我实际正在创作的内容 我为 MSP 工作 我的任务是创建一个供我们的一位客户使用的用户管理 Powershell 脚本 以便我们可以
  • 在 PowerShell 中提示用户输入

    我想提示用户进行一系列输入 包括密码和文件名 我有一个使用的例子host ui prompt 这似乎很合理 但我无法理解回报 有没有更好的方法在 PowerShell 中获取用户输入 Read Host http technet micro
  • 检测 UTF-8 编码文本文件中的损坏字符

    我有一个使用错误的字符编码编辑的文本文件 因此当我使用 UTF 8 打开它时 某些字符串中有一些 mojibake 和损坏的字符 哪种脚本语言能够最有效地检测这些损坏的字符 Perl 不是一个选择 我基本上试图找到一种使用脚本扫描文本文件并
  • 从 WCF 发送的响应中删除 utf-8 标识符 (BOM)

    我正在用 c 创建 facebook Rest API 的克隆 我正在使用 facebook PHP sdk 对其进行测试 我遇到的问题是我的网络 Rest 服务发送的响应前面包含 utf 8 Bom 并且 Facebook SDK 无法正
  • 将文件夹中所有文本文件中与模式匹配的行提取到单个输出文件

    我试图提取文件夹中所有文件中以 开头的每一行 然后将这些行复制到单独的文本文件中 目前在 PowerShell 代码中使用此代码 但我没有得到任何结果 files Get ChildItem folder Filter txt foreac
  • 在 Windows Server 2008 R2 上将 HKCR\CLSID\* 密钥的所有者更改为管理员

    Windows Server 2008 R2 上有一个注册表项 HKCR CLSID 76A64158 CB41 11D1 8B02 00600806D9B6 其所有者不是管理员 它是TrustedInstaller 现在制作远程 DCOM
  • Powershell命令Publish-AzWebApp未发布应用程序

    我有一个 Net 6 Web API 应用程序 我可以通过 Visual Studio 2022 将其发布到 Azure 应用程序服务 然后使用该应用程序 现在我想自动化它 我的 powershell 创建了一个 zip 文件 其中包含所有
  • 使用Powershell的按位运算符

    我正在寻找如何解决以下场景的示例 想象一下我的打印机具有以下 状态 属性0 离线2 纸盘已空4 墨粉耗尽8 卡纸 当我查询状态时 它返回值 12 我可以明显看到这意味着打印机碳粉耗尽且卡纸 但我如何使用 Powershell 解决这个问题
  • 如何在 PowerShell 中将 5.7303333333e+02 等字符串转换为十进制?

    我正在尝试转换字符串 例如5 7303333333e 02 to the decimal类型 我尝试过使用 decimal TryParse但返回值是假的 有没有类似的方法 datetime parseexact 或任何干净的方法来转换这些
  • 如何退格或删除?

    在 Windows 10 中 当我通过 Windows 上的 Kitematic 中的容器启动 MS PowerShell 进行 ssh 时 我注意到我无法退格或删除 而是得到 H 表示退格 而不是实际删除前一个字符 我错过了什么吗 接受的
  • PowerShell:导入不带标题的 CSV 并删除部分重复行

    我有一个日志文件 其格式为 CSV 没有标题 第一列基本上是所记录问题的唯一标识符 对于同一问题标识符 可能有多行具有不同的详细信息 我想删除第一列重复的行 因为此时我不需要其他数据 目前我对 PowerShell 已经有了相当基本的了解
  • 为什么使用 Get-Variable 访问参数变量的属性仅在第一次在 ISE 中有效?

    感谢 StackOverflow 的优秀人员 我们获得了非常好的评价answer https stackoverflow com questions 42697072 find the values in validateset 42697
  • 如何在多个文件上调用动词

    我想使用 PowerShell 在多个文件上调用打印动词 在 Windows 资源管理器中 我可以进入一个文件夹 选择多个文件 右键单击并选择打印选项 这将打开 打印图片 对话框 其中包含所有选定的文件 我可以使用以下方法对一个文件执行此操

随机推荐

  • 如何让 xdebug/step-debugging 与 ddev 一起使用?

    我一直在我的 Drupal 项目上使用 ddev 现在想使用 xdebug 这样我就可以使用 PhpStorm 进行逐步调试 或者实际上任何 IDE 都可以 但我似乎无法让它在断点处停止 我试图遵循ddev 文档中的说明但这并没有让我继续下
  • 在 Matlab 中生成包含给定集合中至少一个元素的所有组合

    I use combnk生成组合列表 如何生成始终包含特定值的组合子集 例如 对于combnk 1 10 2 我只需要包含 3 和 或 5 的组合 有没有快速的方法可以做到这一点 好吧 在您的具体示例中 从集合 1 10 中选择两个整数 其
  • 无法更改引导工具提示标题

    我已经浏览了有关堆栈溢出的几篇文章 询问了几乎完全相同的问题 但我在这些问题上发现的内容都没有帮助 我对 JQuery 和 Bootstrap 非常陌生 所以也许我只是错过了一些非常简单的东西 我希望能够在第一次初始化后更改不同元素上的工具
  • 如何将 boost 线程添加到向量中

    我有这样的错误 vector
  • Android ZipInputStream:只有 DEFLATED 条目可以有 EXT 描述符

    在我的 Android 设备上 我需要提取从内容 uri 获取的文件 一个 xapk 据我所知 这是一个普通的 zip 存档 我正在使用这行代码创建 ZipInputStream ZipInputStream zis new ZipInpu
  • *(a++) 给出错误,但 *(a+1) 没有给出错误?其中 a 是数组名称?

    在下面的代码中 void main char a 1 5 3 4 5 6 printf d n a line gives error wrong type argument to increment printf d n a 1 第 4 行
  • Javascript:非阻塞方式等待条件为真

    我有几个 ASP NET UpdatePanel 每个都有一个与同一按钮的服务器端单击事件绑定的 AsyncPostBackTrigger 由于一次只能有一个 UpdatePanel 执行其操作 因此我使用 get isInAsyncPos
  • 理解 std::forward

    为什么编译器无法推断出模板参数std forward I mean include
  • 如何获取 IQueryable.Count 的 ToTraceString

    I use ObjectQuery IQueryable ToTraceString 获取并调整将由 LINQ 执行的 SQL 代码 我的问题是 与大多数 IQueryable 方法不同 IQueryable Count 的定义如下 pub
  • ELF动态加载器符号查找排序

    解析动态重定位时符号查找的搜索顺序是什么 当解析共享库的符号时 加载程序首先在 主可执行文件 中搜索 以让主可执行文件覆盖定义 还是什么 根据我的理解 每个可执行对象都有自己的 查找范围 主可执行文件通常是 全局 查找范围中的第一个对象 这
  • 什么是依赖注入?

    已经发布了几个问题 其中包含有关的具体问题依赖注入 例如何时使用它以及有哪些框架 然而 什么是依赖注入以及何时 为什么应该或不应该使用它 到目前为止我发现的最好的定义是詹姆斯 肖尔 James Shore 创作的一首 依赖注入 是25美元
  • 如何禁用android中网格视图中特定位置的项目点击

    我正在使用网格视图 其中每个单元格使用文本视图 我正在使用 onitemclick 在单击网格单元格时执行某些操作 我想禁用网格视图中特定位置的项目单击 我怎么做 我对 getView 中的特定位置使用了convertView setcli
  • 如何使用 DOM 通过年龄验证

    我正在尝试从 Steam 商店页面中提取一些图像 URL 例如 http store steampowered com app 35700 http store steampowered com app 252490 这是我正在使用的代码
  • 是否可以在不包含 System.Linq 命名空间的情况下使用 Linq 和 lambda?

    前段时间 我一直在从事一个相当扭曲的项目 我只能在单个范围内编写代码 然后将其放入 C 函数中 通过另一个模块 我只能使用之前声明的命名空间 我对它们没有影响 并且只能使用我工作范围内的变量 因此 我无法更改标头和包含的库 当我想对泛型集合
  • 如何拦截所有http请求,包括表单提交

    我想拦截从我的网页发出的所有 http 请求 并向请求正文添加一个参数 我的页面包含表单 我还想捕获表单提交 我尝试过使用 Jquery ajaxSend 和 Javascript 的 setRequestHeader 但两者都不适合我 我
  • 为什么 String#gsub 的内容加倍?

    s main quotes s gsub gt main quotes quotes 这似乎是错误的 我希望得到 main quotes 当我不使用转义字符时 它会按预期工作 s gsub gt main quotes 所以 逃跑一定是有什
  • 在 JAR 中包含 JAR 的类路径

    是否可以指定一个Javaclasspath包括另一个 JAR 文件中包含的 JAR 文件 如果您尝试创建一个包含您的应用程序及其所需库的单个 jar 有两种方法 据我所知 可以做到这一点 第一个是One Jar 它使用特殊的类加载器来允许嵌
  • 从 REPL 评估 Scala 中的字符串命令

    有没有办法评估 Scala 中的任意字符串 就好像直接将相同的文本输入到 Scala REPL 中一样 我的意思是 我想做这样的事情 scala gt eval val x 42 scala gt x res2 Int 42 由于 Scal
  • 在 MySQL 中选择列表的子集

    我是一个初学者 我有两个表 产品 和 产品属性 这是一些想象的数据 实际的东西涉及更多的表 产品表 product id product name 10 aaa 11 bbb 12 ccc 产品属性表 attribute id produc
  • 以 UTF8 保存时,如何防止带有设置内容的额外换行符,同时保留现有换行符?

    我有一个小的 powershell 脚本 它读取 UTF8 编码的文档 在其中进行一些替换并将其保存回来 如下所示 Get Content path Replace myregex replacement Set Content path2