使用 powershell 清理文本文件

使用 powershell 清理文本文件

一直在为此苦苦挣扎,想知道是否有人可以提供帮助。我有一个很大的文本文件,里面有我想要删除的多余数据。以下是输入文件的示例:

Text In Page - 1

S
Dept
l<m RKB)
"1915
slightly 234234
"sil dsf 56
"gr
gl
1920 100
1925 100
1930 100 Cls
"1935 100 Cl


Text In Page - 2

l<m RKB)
"1915
slightly
"sil
"gr
glauc
1920 100
1925 100
1930 100 Cls
"1935 100 Cl

我想删除以下内容:

  • 任何空白行
  • 任何位于行首的“
  • 以字母 AZ、az 开头的任何行

因此,对于上面的例子,我会得到

1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl

答案1

我在想:

(gc D:\test.txt) -replace '^"' | sls '\S' | sls -NotMatch '^[A-Za-z]' | sc out.txt

其作用是:

  • 获取文件的行,如果第一个字符是引号,则将其替换为空
  • 选择与“非空格”匹配的行(即空行被过滤掉)
  • 选择不以 A-Za-z 开头的行
  • 将结果写入 out.txt

有多种方法来编写长版本,具体取决于您喜欢使用管道链接事物的程度,而不是一遍又一遍地使用变量,但它是这样做的:

$lines = Get-Content D:\test.txt
$lines = $lines -replace '^"'
$lines = $lines | Select-String '\S'
$lines = $lines | Select-String -NotMatch '^[A-Za-z]'
$lines | Set-Content out.txt

相关内容