У меня есть набор текстовых файлов, которые имеют следующую структуру.Powershell заменить текст на строки по длине
Заявление о проблемах: Каждая строка может содержать 80 символов или меньше 80. Я хочу удалить любое число из 8 цифр, если оно найдено в конце строки, если его длина составляет 80 символов.
Например, ниже. Строка 1 и строка 2 содержат 80 символов с 8-значным числовым номером в конце. Так просто удалите последние 8 цифр, то есть 00100001 и 00100002. Для строк 3 и строки 4 ничего не делайте. Для строки 5 снова удалите последние 8 числовых цифр, то есть 00100024. Для строки 6 ничего не делайте. Постскриптум Материал в скобках (длина 80 строк 1) предназначен только для иллюстрации и не является частью любой линии.
ABCD some text 00100001 (length 80 Line 1)
EFGH 00100002 (Length 80 Line 2)
ABCD Some text (Length less than 80 Line 3)
XYZD (Length less than 80 Line 4)
MNOP 00100024 (Length 80 Line 5)
ABCD (Length less than 80 Line 6)
Результат выше
ABCD some text
EFGH
ABCD Some text
XYZD
MNOP
ABCD
So Far, я мог только его настроить, чтобы прочитать все файлы в цикле, но не в состоянии реально изменить содержимое файла. Уверен, что у меня проблема с файлом вне файла.
**
#ERROR REPORTING ALL
Set-StrictMode -Version latest
$path = "d:\users\desktop\D2d_Try"
$files = Get-Childitem $path -Recurse | Where-Object { !($_.psiscontainer) }
Function getStringMatch
{
# Loop through all *.txt files in the $path directory
Foreach ($file In $files)
{
$content = Get-Content $file.fullName
$content | foreach-object { if($_.length -eq 80) { if($_ -match "^.{72}([0-9]{8})")
{
$_ -replace "$matches[1]"," " | out-file "c:\$file" -append
}
}
}
}
}
getStringMatch
Так, казалось бы вы использовали ответ Фрод Ф. в это что вы отметите это как ответ. – Matt
Нет проблем Мэтт. Я отметил его как ответ. – Yogesh