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

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

Ответить
Настройки темы
CMD/BAT - SED. Символы "невидимки". Как удалить?

Пользователь


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

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


Делаю копирование содержимого нескольких файлов в один методом:
copy C:\A\Bats\Search\1search\6search.txt+C:\A\Bats\Search\2write\6write.txt+C:\A\Bats\Search\3wiki\6wiki .txt C:\A\Bats\Search\0uncertainty\metka.txt
(файлов с содержимым может быть и больше)
В файлах может быть "!",цифры, а может и ничего не быть. При подобном "соединение" получил файл со "строчкой" -
"!











1"
только у меня в обычном блокноте это выглядит как "!1", а между этими двумя символами около 12 "невидимых" символов. Не знаю как называются. А самое главное Как от них избавиться оставив всё содержимое? Табы и пробелы не нужны если будут. Только видимые символы. В идеале выполнить это sed-ом, и желательно в одну простую строчку команду.
пробовал удалить всё после "!" так - C:\A\Bats\Search\sed.exe s/!.+// C:\A\Bats\Search\0uncertainty\metka.txt>C:\A\Bats\Search\0uncertainty\metka2.txt - не работает. (Что "1" таким методом типо удалиться знал)
Как решить?

Отправлено: 04:58, 08-11-2017

 

Ветеран


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

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


NLOLegion, делайте так:
Код: Выделить весь код
copy /b C:\A\Bats\Search\1search\6search.txt+C:\A\Bats\Search\2write\6write.txt+C:\A\Bats\Search\3wiki\6wiki .txt C:\A\Bats\Search\0uncertainty\metka.txt
Если не получится — упаковывайте Ваши файлы в архив и выкладывайте, будем смотреть что в оригиналах.

Отправлено: 06:09, 08-11-2017 | #2



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

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


Пользователь


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

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


Iska, копирование проходит отлично если в текстовом файле лишь символы или же он абсолютно пуст. Но если создать несколько текстовых файлов, к примеру 1.txt, 2.txt, 3.txt и в них сохранить несколько пустых строчек("потапать" enter на клавиатуре), то после копирования содержимого в один файл там обнаружится куча этих "невидимых" символов. Вот именно от них и нужно избавиться. Наверное это "символы переноса каретки".

Отправлено: 07:45, 09-11-2017 | #3


Ветеран


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

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


Цитата NLOLegion:
Но если создать несколько текстовых файлов, к примеру 1.txt, 2.txt, 3.txt и в них сохранить несколько пустых строчек("потапать" enter на клавиатуре), то после копирования содержимого в один файл там обнаружится куча этих "невидимых" символов. »
NLOLegion, всё правильно, так и должно быть. И символы эти вполне видимы — как результат отображения отдельных строк, а не сплошного текста. Либо можно взять любой вменяемый редактор и включить отображение служебных/непечатаемых символов:
Скрытый текст


Цитата NLOLegion:
Вот именно от них и нужно избавиться. »
И хде Ваш архив с образцами файлов, о котором я просил выше ?

Понимаете, есть такое понятие как кодировка файлов (плюс сюда же наличие/отсутствие BOM). Это раз. Второе — типы концов строк тоже бывают разными — пара CrLf для DOS/Windows, Lf для Unix и Cr для Mac. И чтобы в общем случае правильно склеить текстовые файлы с одновременным удалением пустых строк крайне желательно представлять с каким именно исходным материалом предстоит работать.

В частном случае — да, можно попробовать обойтись пакетным файлом, наподобие (по причине отсуствия представленных образцов файлов — не проверялось):
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

>"C:\A\Bats\Search\0uncertainty\metka.txt" (
	for %%i in ("C:\A\Bats\Search\1search\6search.txt" "C:\A\Bats\Search\2write\6write.txt" "C:\A\Bats\Search\3wiki\6wiki.txt" "C:\A\Bats\Search\0uncertainty\metka.txt") do ^
		for /f "usebackq delims=" %%j in ("%%~i") do echo %%j
)

endlocal
exit /b 0

Отправлено: 08:35, 09-11-2017 | #4


Пользователь


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

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


Вот папка из диска C.
Ещё раз попытаюсь обрисовать суть батника из папки:
Есть несколько текстовых файлов 00.txt, 1.txt, 2.txt и т.п.
Их содержимое копируется в один файл - 0.txt.
В файле 00.txt всегда неизменно один символ 0 - это метка она нам понадобится.
В других же файлах таких как 1.txt, 2.txt и т.п. может быть какая-то цифра. К примеру соответствующая номеру самого файла. А может быть и пустая строка, и две пустые строки.
А дальше батник анализирует содержимое файла 0.txt, и если в файле лишь 0, то запускает блокнот, а если ещё какие-то символы то ничего не происходит.

Отправлено: 09:52, 09-11-2017 | #5


Пользователь


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

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


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

ПАПКА

Отправлено: 09:53, 09-11-2017 | #6


Ветеран


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

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


NLOLegion, ну, вот о чём я и говорил — Unix:


Цитата NLOLegion:
Есть несколько текстовых файлов 00.txt, 1.txt, 2.txt и т.п. »
Переданные Вами файлы:
Скрытый текст

С какими именно файлами мы должны работать, как их отделить от прочих в каталоге? В каком порядке должно осуществляться слияние? Если имена числовые, то а) сколько будет файлов и б) почему у Вас слияние такого странного вида — «00+1+2+…N→0», а не, например, «0+1+2+…N→Result»?

Видите, сколько вопросов.

Отправлено: 11:08, 09-11-2017 | #7


Пользователь


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

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


Цитата Iska:
у, вот о чём я и говорил — Unix: »
мне просто нужно оставить Только цифры если они есть
Имена числовые для простоты. Их названия не принципиальны. В папке с файлами которые будут "сливаться" могут быть и другие не учавствующие в данном процессе txt файлы.
а) файлов может быть любое количество (нужно использовать именно пути с именами (что-то типа C:\A\Bats\Search\0uncertainty\1.txt)
б) это просто названия. они могут быть разные. никакой закономерности.

В идеале выполнить удаление "переноса каретки" именно sed-ом. Но это в идеале.
Сейчас пилю что-то типа
C:\A\Bats\Search\sed.exe -e ":a;N;$!ba;s/\n//g" C:\A\Bats\Search\0uncertainty\000.txt>C:\A\Bats\Search\0uncertainty\0000.txt
но в итоге один перенос каретки(или "разрыв строк") всё равно остаётся после слитых цифр из txt

Отправлено: 11:57, 09-11-2017 | #8


Ветеран


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

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


NLOLegion, тогда чем Вас не устраивает предложенный выше код? Я беру Ваши файлы:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

>"0.txt" (
	for %%i in (00.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt 11.txt 13.txt) do for /f "usebackq delims=" %%j in ("%%~i") do echo %%j
)

endlocal
exit /b 0
и получаю:

Что не так?!

Отправлено: 12:49, 09-11-2017 | #9


Пользователь


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

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


Цитата Iska:
Что не так?! »
Этот способ работает, но не так как хотелось бы. В идеале цифры в один ряд должны быть и больше не единого символа.
А в данном случае не так работает следующий код:

setlocal
for /f "tokens=*" %%i in ('dir /b /s C:\New\*.txt') do (
1>nul findstr "\<%%~ni\>" "%%i" && call:exec %%~ni
)
goto:eof
:exec
if %1 equ 0 start notepad
Exit /b

ведь в файле "0.txt" не только 0, но и 1. Следовательно блокнот не должен запускаться.

Отправлено: 13:37, 09-11-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить из файла "Test.txt" все символы звездочка * ufooo Скриптовые языки администрирования Windows 10 17-05-2015 14:29
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
[решено] Как удалить два "неудаляемых" вируса, их "назначение", и принцип работы Drongo Хочу все знать 20 11-05-2008 01:14
Разное - [решено] Как в список "Символы" добавить собственные символы для вставки в текст T-IIIJ Microsoft Windows 2000/XP 4 23-02-2008 16:27
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход