Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить в текстовом файле все строки кроме одной нужной.

Ответить
Настройки темы
CMD/BAT - [решено] Удалить в текстовом файле все строки кроме одной нужной.

Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Изменения
Автор: 9119
Дата: 16-12-2020
Вложения
Тип файла: zip source.zip
(67.4 Kb, 7 просмотров)
Добрый.

Есть однотипные файлы txt. В них строка №2. Очень длинная. Явно превышающая стандартное ограничение.
find и findstr пишут "длинная строка"
txt во вложении.

Начинается нужная строка всегда с "audioContent".


Нужно:

1) скопировать строку №2 из source.txt в out.txt.

или

в source.txt удалить ВСЕ строки кроме №2.

В идеале, нужно решение без привязки к искомым словам, а просто к номеру строк.


2) В результирующем txt удалить пробелы, слово "audioContent" и (")двойные кавычки(")

Отправлено: 16:11, 16-12-2020

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Берём в руки sed, и:
Код: Выделить весь код
sed -i.bak "2!d" *.txt
Удалит всё, за исключением второй строки в txt файлах текущего каталога (с созданием резервных копий оригиналов).
sed не является штатным средством, однако есть много различных портов под винду.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:46, 16-12-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


Powershell
Код: Выделить весь код
$c = Get-Content -Path "C:\temp\source.txt"
($c[1].split(':')[1].split('"').split(',')).trim() -ne "" | Out-File C:\temp\out.txt

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:15, 16-12-2020 | #3


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Конкретно для этого файла.
Код: Выделить весь код
(Get-Content .\source.txt | ConvertFrom-Json).audioContent | Set-Content out.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:03, 16-12-2020 | #4


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


Foreigner, надо же, только сегодня написал в канале про ConvertFrom-Json и тут же не увидел его :)

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 23:08, 16-12-2020 | #5


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
Удалит всё, за исключением второй строки »
а если скажем нужно удалить 2 и 3 строки... как тогда будет выглядеть команда для sed?



Цитата Vadikan:
Powershell »
есть также файл text.json вида:
Скрытый текст
{
"audioConfig": {
"audioEncoding": "LINEAR16",
"pitch": 0,
"speakingRate": 1
},
"input": {
"text": "Тест речевого движка"
},
"voice": {
"languageCode": "ru-RU",
"name": "ru-RU-Wavenet-B"
}
}


Можно ли реализовать замену Тест речевого движка на любую другую фразу (длинную и с символами) в этом файле посредством cmd/powershell/стороннего софта?
В идеале, чтобы после ввода нового текста (до того как он заменит собой Тест речевого движка) он как бы становился в одну строку...без пробелов между строками, абзацев и тд. (как если вы, например, скопируете содержимое любой +/- интернет-статьи и вставите скажем в адресную строку браузера хром, а потом скопируете от туда..там автоматом весь текст делается в 1 строку.)
Привязаться можно разве что к "text": , т.к другие параметры могут быть измененены/смещены и т.д. (в т.ч и Тест речевого движка)

Удалить, например в text.json нужную строку по номеру (как с sed) и вместо нее вставить нужную - не выйдет, т.к номер строки с ""text":" может меняться.

Последний раз редактировалось 9119, 16-12-2020 в 23:29.


Отправлено: 23:09, 16-12-2020 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


9119, можно. Только желателен сам файл, целиком, именно в виде файла. Ибо: кодировка, BOM, вид концов строк.

«Привязываться» в json, как и в любом другом структурированном файле, нужно по пути, а не «найти текст-заменить».

Цитата Vadikan:
Foreigner, надо же, только сегодня написал в канале про ConvertFrom-Json и тут же не увидел его »
Vadikan, бывает .
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:21, 16-12-2020 | #7


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip text.zip
(318 байт, 3 просмотров)

Прикрепил.

Отправлено: 23:31, 16-12-2020 | #8


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Не совсем понятно зачем удалять строки. Json можно изменить:
Код: Выделить весь код
$json = Get-Content text.json | ConvertFrom-Json
$json.input.text = "Новый текст"
$json | ConvertTo-Json | Set-Content new.json
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:45, 16-12-2020 | #9


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Json можно изменить »
я этого не знал. Это правда проще.

Я так понял это powershell.
Тогда, если можно, немного уточну задачу..


1) $json = Get-Content text.json | ConvertFrom-Json
2) здесь нужно вывести окно с запросом о вводе текста (при вводе текста задается значение переменной). Не обязательно отдельным окном, но желательно.
Скрипт при этом останавливается, пока не введем нужный текст.

3) $json.input.text = "переменная"
4) $json | ConvertTo-Json | Set-Content new.json


Простите что так на пальцах...

Последний раз редактировалось 9119, 17-12-2020 в 00:10.


Отправлено: 00:01, 17-12-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить в текстовом файле все строки кроме одной нужной.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Отсортировать строки в текстовом файле blackeangel Программирование и базы данных 4 10-01-2017 11:31
CMD/BAT - [решено] удалить пусты строки в текстовом файле warkdimka Скриптовые языки администрирования Windows 8 19-02-2016 15:31
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней Alexander_88 Скриптовые языки администрирования Windows 8 05-01-2015 12:43
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? Pozia AutoIt 23 14-05-2009 21:41
[решено] Работа из командной строки | Убрать все пробелы в текстовом файле Greyman Хочу все знать 11 17-06-2007 22:44




 
Переход