编辑文本文件中的空格

时间:2015-08-12 16:14:16

标签: powershell-v2.0

所以这就是问题所在。用户输入11个字母以下的字符串,然后打开文本文件," Foo"用用户给定的字符串替换,但缩进将保持不变。让我们说我在下面的文本文件中有这些数据。

Foo        bar
Foo        bar
Foo        bar

现在用户输入" bigdog"和" Foo"将被替换为文本文件的缩进必须保持不变,见下文。

bigdog     bar
bigdog     bar
bigdog     bar

我怎样才能做到这一点?到目前为止我的代码看起来像这样:

$name = Read-Host 'write 10 letter string'
(Get-Content file.txt) |
  Foreach-Object {$_ -replace 'Foo        ',$name.PadRight(11, ' ')} |
  Out-File file.txt

但只需在“Foo”中添加空格即可。不削减它,所以有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用format operator-f)填充和对齐文字:

$newstring = '{0,10}' -f $name
(Get-Content 'file.txt') |
  ForEach-Object { $_ -replace '^Foo       ', $newstring } |
  Out-File 'file.txt'

我建议锚定搜索表达式(^匹配字符串的开头),除非你想在字符串中的任何地方替换它。此外,您可以将表达式压缩为^Foo {7}(大括号中的数字与给定次数之前的表达式匹配,即 {7}匹配7个空格。)