3

Как мне перевернуть содержимое файла .txt, сохранив при этом пустые строки?

Например

text one

text two
text three

text four


text five


text six

станет

text six


text five


text four

text three
text two

text one

Желательно с консолью Windows или также с исходным кодом для компиляции из приложения. У меня Windows 7.

6 ответов6

6

Это легко сделать с помощью Powershell без каких-либо дополнительных инструментов.

$x = Get-Content -Path data.txt; Set-Content -Path data.txt -Value ($x[($x.Length-1)..0])
2

Нашел идеальный инструмент для этого: tac (часть CoreUtils для Windows)

1

Еще один пример PowerShell. Это просто показывает, что задним ходом. Было бы тривиально экспортировать $ x в файл.

$x = Get-Content -Path .\abc.txt
[array]::Reverse($x)
$x
0

Вот что-то родное - скрипт Visual Basic (.vbs).

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
infile = Wscript.Arguments(0)
Set objTextFile = objFSO.OpenTextFile (infile, ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
arrText = Split(strText, vbCrLf)
for l = ubound(arrText)-1 to 0 step -1
   wscript.echo arrText(l)
Next

сохраните его как (например) revfile.vbs и запустите, используя движок cscript. Как написано, он выводит вывод на консоль. Чтобы записать перевернутые строки в файл, используйте оператор> перенаправления, как это

cscript //nologo revfile.vbs "input.txt" > "output.txt"

Используйте кавычки вокруг имен файлов / путей, если они имеют пробелы.

C:\Test>type input.txt
apple
bear
cat
dog
egg
fog
gas
hip

ink
joe
kilo

C:\Test>type output.txt
kilo
joe
ink

hip
gas
fog
egg
dog
cat
bear
apple
0

В большинстве случаев типичная сортировка не сохраняет ваши пустые строки, а вместо этого помещает их все вместе где-то в вашем роде. Если бы это был я, я бы просто скопировал и вставил строки в excel и отсортировал их, если это была бы какая-то разовая вещь. В противном случае вы попадете в действительно причудливый сценарий, чтобы сделать это (но, эй, это возможно).

Что касается сценария, я сначала должен иметь некоторый код, который ищет пустые строки и сохраняет это местоположение в массиве. Затем я сортировал бы оставшиеся данные, используя какой-то встроенный метод сортировки или создавая свой собственный код с "пузырьковой сортировкой". После сортировки снова введите разрывы строк в указанных местах, и все будет готово.

0

Я читал файл в обратном порядке (используя скрипт, программу и т.д.) И записывал его в «новый» файл, избегая сортировки. Затем удалите «старый» файл и переименуйте «новый» в «старый».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .