Войти

Показать полную графическую версию : Поместить строку в строку


blackeangel
15-06-2017, 22:27
/system:
drwxr-xr-x 0 0 2017-04-01 09:15 app
drwxr-xr-x 0 2000 2017-03-30 20:53 bin
-rw-r--r-- 0 0 10911 2017-04-11 18:53 build.prop
drwxr-xr-x 0 0 2017-04-01 09:14 data-app
drwxr-xr-x 0 0 2017-06-05 22:01 etc
drwxr-xr-x 0 0 2017-03-30 20:53 fonts
drwxr-xr-x 0 0 2017-04-17 20:39 framework
drwxr-xr-x 0 0 2017-03-30 20:53 lib
drwxr-xr-x 0 0 2017-03-30 20:53 lib64
drwxrwx--- 0 0 2017-03-30 20:52 lost+found
drwxr-xr-x 0 0 2017-03-31 05:58 media
drwxr-xr-x 0 0 2017-04-01 09:16 priv-app
drwxr-xr-x 0 0 2017-03-30 20:54 rfs
drwxr-xr-x 0 0 2017-03-30 20:54 spaces
drwxr-xr-x 0 0 2017-03-30 20:54 usr
drwxr-xr-x 0 2000 2017-03-30 20:54 vendor
drwxr-xr-x 0 2000 2017-03-30 20:54 xbin
/system/app:
drwxr-xr-x 0 0 2017-03-30 20:52 AnalyticsCore
drwxr-xr-x 0 0 2017-03-30 20:52 AntHalService
drwxr-xr-x 0 0 2017-03-30 20:52 AntiSpam
drwxr-xr-x 0 0 2017-03-30 20:52 AppIndexProvider
drwxr-xr-x 0 0 2017-03-30 20:52 ApplicationsProvider
drwxr-xr-x 0 0 2017-03-30 20:52 AutoTest
drwxr-xr-x 0 0 2017-03-30 20:52 Bluetooth

как сделать чтобы было вот так

drwxr-xr-x 0 0 2017-04-01 09:15 /system/app
drwxr-xr-x 0 2000 2017-03-30 20:53 /system/bin
-rw-r--r-- 0 0 10911 2017-04-11 18:53 /system/build.prop
drwxr-xr-x 0 0 2017-04-01 09:14 /system/data-app
drwxr-xr-x 0 0 2017-06-05 22:01 /system/etc
drwxr-xr-x 0 0 2017-03-30 20:53 /system/fonts
drwxr-xr-x 0 0 2017-04-17 20:39 /system/framework
drwxr-xr-x 0 0 2017-03-30 20:53 /system/lib
drwxr-xr-x 0 0 2017-03-30 20:53 /system/lib64
drwxrwx--- 0 0 2017-03-30 20:52 /system/lost+found
drwxr-xr-x 0 0 2017-03-31 05:58 /system/media
drwxr-xr-x 0 0 2017-04-01 09:16 /system/priv-app
drwxr-xr-x 0 0 2017-03-30 20:54 /system/rfs
drwxr-xr-x 0 0 2017-03-30 20:54 /system/spaces
drwxr-xr-x 0 0 2017-03-30 20:54 /system/usr
drwxr-xr-x 0 2000 2017-03-30 20:54 /system/vendor
drwxr-xr-x 0 2000 2017-03-30 20:54 /system/xbin
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/AnalyticsCore
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/AntHalService
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/AntiSpam
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/AppIndexProvider
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/ApplicationsProvider
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/AutoTest
drwxr-xr-x 0 0 2017-03-30 20:52 /system/app/Bluetooth

Iska
15-06-2017, 22:48
blackeangel, если в способах использования регулярок на Java есть подобие метода/функции .Replace() — используйте этот способ. Регуляркой находите, например, дату-время, затем заменяете найденное на "$1добавленный текст", где $1 — ссылка на найденную группу.

blackeangel
15-06-2017, 23:05
blackeangel, если в способах использования регулярок на Java есть подобие метода/функции .Replace() — используйте этот способ. Регуляркой находите, например, дату-время, затем заменяете найденное на "$1добавленный текст", где $1 — ссылка на найденную группу.
Что то не шибко понял как это можно строку сверху прикрутить в текущую строку.

Iska
15-06-2017, 23:52
blackeangel, я а) крайне далёк от Java, б) у меня к ней паталогическое неприятие, имеющее исторические корни. Посему максимум, что я могу — подсказать, как сие может выглядеть на VBScript:
Option Explicit

Dim objFSO
Dim objRegExp

Dim strSourceFile
Dim strDestFile

Dim arrContent
Dim strLine
Dim strPath


strSourceFile = "C:\Мои проекты\0087\Source.txt"
strDestFile = "C:\Мои проекты\0087\Destination.txt"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

objRegExp.Pattern = "(\d{4}-\d{2}-\d{2} \d{2}:\d{2} )"

With objFSO.OpenTextFile(strSourceFile)
arrContent = Split(.ReadAll(), vbCrLf)
.Close
End With

With objFSO.CreateTextFile(strDestFile)
For Each strLine In arrContent
If Not objRegExp.Test(strLine) Then
strPath = Left(strLine, Len(strLine) - 1)
WScript.Echo strPath
Else
.WriteLine objRegExp.Replace(strLine, "$1" & strPath & "/")
End If
Next

.Close
End With

Set objRegExp = Nothing
Set objFSO = Nothing

WScript.Quit 0

Вкратце:

читаем содержимое, разбиваем на строки, помещаем в массив;
перебираем массив, сравнивая каждую строку из него с шаблоном даты+пробел;
если не совпало — используем эту строку в дальнейшем как путь, обрезав из неё последний сивол («:»);
если совпало — делаем замену, вставляя в строку вместо найденной даты+пробела ту же самую дату+пробел («$1») плюс путь плюс символ разделителя пути «/» и пишем полученную в результате замены строку в файл.

Если концы строк в файлах в стиле Unix — только LineFeed — тогда понадобится слегка подкорректировать код.

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

greg zakharov
16-06-2017, 11:48
Посему максимум, что я могу — подсказать, как сие может выглядеть на vbscriptЕсли Вы не обратили внимание, предоставленные автором темы примеры очень смахиват на вывод UNIX'овой команды ls. Если предположить, что это оно и есть, то куда проще сделать нечто вроде:
ls -ld $(find . -type f)
Чтобы исключить имя пользователя из вывода, можно воспользоваться sed:
ls -ld $(find . -type f) | sed -e 's/User//g'
По аналогии sed'ом можно убрать и прочие артефакты.
Хотя, если следовать логике, "жаба" здесь используется для программирования какого-то [з]A[n]droid устройства, так что там скорее можно все проще сделать - была б известна конечная цель.

Iska
16-06-2017, 13:08
Если Вы не обратили внимание… »
Не обратил, ибо не пользую. Если оно так — само собой имеет смысл зараз получать потребное содержимое.

была б известна конечная цель. »
Я как-то у автора спрашивал, а он отвечал, было дело, ещё во времена VB6-подхода, с год-полтора назад вроде как.

для программирования какого-то [з]A[n]droid устройства »
Помнится, так оно и было.




© OSzone.net 2001-2012