0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 108
1

Удаление строк после определенного символа

13.10.2017, 19:05. Показов 6934. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане.

Интересует вопрос.
Как удалить продолжение строки после определенного символа.
Имеем текстовый файл cbs_details.txt
В этом файле есть строки примерно следующего формата:
"\??\C:\Windows\System32"\[l:24{12}]"icardagt.exe"; source file in store is also corrupted
"\??\C:\Windows\System32"\[l:24{12}]"ideograf.uce"; source file in store is also corrupted
"\??\C:\Windows\system32\drivers\en-US"\[l:28{14}]"usbhub.sys.mui" from store
"\??\C:\Windows\system32\drivers\ru-RU"\[l:28{14}]"usbhub.sys.mui" from store
"IMPlugin.dll" of Microsoft-Windows-Networking-Internet_Authentication_Service_MigPlugin, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch

нужно чтобы после обработки осталось

"\??\C:\Windows\System32"\[l:24{12}]"icardagt.exe"
"\??\C:\Windows\System32"\[l:24{12}]"ideograf.uce"
"\??\C:\Windows\system32\drivers\en-US"\[l:28{14}]"usbhub.sys.mui"
"\??\C:\Windows\system32\drivers\ru-RU"\[l:28{14}]"usbhub.sys.mui"
"IMPlugin.dll"

Удалить все что идет после ",,,,,,,,"

Добавлено через 26 минут
Разобрался, сделал так:
Windows Batch file
1
for /F "tokens=1,2 delims=; " %%i in (C:\Users\Oleg\Desktop\cbs_details.txt) do (echo %%i >> result.txt)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2017, 19:05
Ответы с готовыми решениями:

Удаление символов в строках, до определенного символа
Всем доброго времени суток. Нужна ваша помощь. Надо на CMD/BAT реализовать такую функцию Есть...

Копирование строк текста , начинающихся с определенного символа
День добрый! Надо создать командный файл , который бы получал в качестве параметра какой-либо...

Удаление файлов определенного типа из определенного каталога
Нужна помощь! Хочу написать командный файл, который бы удалял определенный тип файлов из...

Удаление каталогов с определенного размера
Всем привет, Помогите, пожалуйста, - завтра(01,11,2010) - нужно срочно сдать скрипт - а я не знаю...

21
5982 / 1991 / 323
Регистрация: 10.12.2013
Сообщений: 6,861
13.10.2017, 19:09 2
в среде powershell:
PowerShell
1
(gc cbs_details.txt) -replace '^(".+").+', '$1'
0
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 108
13.10.2017, 20:55  [ТС] 3
Цитата Сообщение от oniava Посмотреть сообщение
for /F "tokens=1,2 delims=; " %%i in (C:\Users\Oleg\Desktop\cbs_details.txt) do (echo %%i >> result.txt)
Но мне нужно что бы результат оставался в этом же файле, а не в другом.

Цитата Сообщение от volodin661 Посмотреть сообщение
в среде powershell:
Интересует CMD/BAT

Добавлено через 1 час 37 минут
Вопрос решил, сделал так:
Код
set file=%userprofile%\Desktop\cbs_details.txt

for /f "tokens=1,2 delims=; " %%i in (%file%) do (echo %%i >> "%~dpn0.tmp")
copy /y "%~dpn0.tmp" "%file%"&& del "%~dpn0.tmp"
endlocal
0
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 14:28 4
Подскажите пожалуйста, как прописать команду которая удалит в каждой строке текстового файла все после символа *

---
Прочитал кучу веток тут на форуме, не получается. Нужно именно в батнике (это одна из списка команд по обработке текстовика). Как в notepad++ сделать регуляркой знаю, но он там виснет. Файлы большие сотни тысяч строк.
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 14:54 5
Ferton, пробуйте:
Windows Batch file
1
@sed -i "s/\(.*\*\)\(.*\)/\1/" test.txt
Примечание.
1) Для работы приложения нужна утилита sed (во вложении). Рекомендую закинуть в C:\windows\system32
2) Вместо test.txt указываете имя файла (полный путь к нему), который требуется обработать
1
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 14:56 6
Утилита sed
Вложения
Тип файла: rar sed.rar (182.7 Кб, 9 просмотров)
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 15:26 7
Даже лучше так (на случай, если символ * присутствует в строке более одного раза. В этом случае после первого символа * удалится остальная часть строки):
Windows Batch file
1
@sed -i "s/\([^\*]*\*\)\(.*\)/\1/" test.txt
1
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 15:29 8
Спасибо за ответ.
Скажите, а почему не работает например при удаление после символа :
И как удалить и само двоеточие.

К примеру, есть текстовой файл с почтами в формате:
dereksm.co.uk@web.de:gdkrk&yrd,_dlssk
monster.co.uk@ralf-gehrig.de:krk&yr-sedefe33..
yahoo.co.ukremer@t-online.de:t85Hfrk&yrdsz2dni, vlafref4


Нужно удалить все что после двоеточия, включая и его само.
Этот код не срабатывает при запуск батника, не удаляется ничего.
Код
@echo off
@sed -i "s/\(.:\:\)\(.:\)/\1/" file.txt
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 15:32 9
Цитата Сообщение от Ferton Посмотреть сообщение
Нужно удалить все что после двоеточия, включая и его само.
Про "включая" только сейчас озвучили условие. Пробуйте:
Windows Batch file
1
@sed -i "s/\([^:]*\)\(:.*\)/\1/" test.txt
1
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 15:40 10
Ура, все работает. Спасибо вам большое!
Со вчера пытался разные варианты пробовать, но такого красивого еще не было )
Работает как же шустро батник, быстрее других программ
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 15:40 11
Ferton, не за что
0
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 16:13 12
Karen87, подскажите пожалуйста, а как удалить дубли строк в текстовом файле?
Например в итоге получился файл rezult.txt , как удалить из него полные дубли строк?
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 16:27 13
Ferton, то если строка повторяется более одного раза, то нужно оставить ее в единичном экземпляре, а все остальные повторы удалить? Или вообще удалить все строки, которые повторяются более одного раза?
0
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 16:34 14
Оставить одну, остальные (дубли) удалить.
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 17:26 15
Попробуйте пока так:
Windows Batch file
1
@awk "! NF || ! seen[$0]++" result.txt>result_new.txt
Примечание.
Для работы скрипта требуется утилита awk (во вложении установщик). После установки в скрипте awk измените на полный путь к исполняемому файлу
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 17:26 16
awk
Вложения
Тип файла: rar gawk-3.1.6-1-setup.rar (4.96 Мб, 6 просмотров)
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 17:54 17
Если с помощью sed, то нужна версия во вложении. Тогда код будет таким:
Windows Batch file
1
@sed -n -i "G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P" result.txt
Примечание. Устанавливаете так же, как и awk и в скрипте вместо sed указываете полный путь к исполняемому файлу
1
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 17:55 18
Sed
Вложения
Тип файла: rar sed-4.2.1-setup.rar (1.87 Мб, 12 просмотров)
0
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 13
11.07.2021, 18:22 19
Не совсем такой результат: он сейчас пишет в новый файл те дубли, что нашел. Возможно я неточно объяснил.

Есть текстовой файл, в нем содержатся дубли строк(email адреса) в разных местах, не подряд. Нужно удалить все дубли из списка- в итоге нужет текстовик в котором нет дублей адресов.
0
3048 / 1055 / 475
Регистрация: 29.05.2016
Сообщений: 4,438
11.07.2021, 18:27 20
Ferton, именно это сейчас скрипт и делает. Покажите пример исходного файла и файла с корректным результатом (достаточно нескольких строк)
0
11.07.2021, 18:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2021, 18:27
Помогаю со студенческими работами здесь

Удаление данных после определенного символа
есть документ , в нем записи такого типа : Linux oper-232 Intel(R) Celeron(R) CPU G530 @...

Поиск определенного слова и удаление строк после него
Здравствуйте. Есть файл с таблицей. Необходимо найти определенное слово, удалить(очистить) строку...

Как читать строку в массив до определенного символа и после продолжить чтение опять до символа
Как читать строку в массив до определенного символа и после продолжить чтение опять до символа. к...

Удаление определенного символа из строки
Добрый день! У меня есть строка вида: var line = "" Как удалить отсюда именно последнюю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru