Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление пустых строк, пробелов и/или конца строк (http://forum.oszone.net/showthread.php?t=312573)

blackeangel 11-03-2016 14:08 2614938

Удаление пустых строк, пробелов и/или конца строк
 
Всем привет. Есть файл содержащий
Код:

major minor  #blocks  name



  7        0      1254 loop0

  7        1      32768 loop1

 254        0    163840 zram0

 179        0  15392768 mmcblk0

 179        1      3072 mmcblk0p1

 179        2      5120 mmcblk0p2

 179        3      10240 mmcblk0p3

 179        4      10240 mmcblk0p4

 179        5        512 mmcblk0p5

 179        6        512 mmcblk0p6

 179        7      16384 mmcblk0p7

 179        8      16384 mmcblk0p8

 179        9      8192 mmcblk0p9

 179      10      10240 mmcblk0p10

 179      11        512 mmcblk0p11

 179      12      2048 mmcblk0p12

 179      13      6144 mmcblk0p13

 179      14      8192 mmcblk0p14

 179      15      5120 mmcblk0p15

 179      16      5120 mmcblk0p16

 179      17      1024 mmcblk0p17

 179      18      32768 mmcblk0p18

 179      19      37888 mmcblk0p19

 179      20    1572864 mmcblk0p20

 179      21    409600 mmcblk0p21

 179      22  13213184 mmcblk0p22

 179      23      16384 mmcblk0p23

 179      96      4096 mmcblk0rpmb

 179      64      4096 mmcblk0boot1

 179      32      4096 mmcblk0boot0

 179      128  31207424 mmcblk1

 179      129  31203328 mmcblk1p1

необходимо удалить пустые строки, пробелы и/или переносы строк.
Пробовал вот такими медодами
Код:

1.        set /p x=<blocks.txt
        set /p "x=%x%" <nul >blocks2.txt
       
2.        for /f "tokens=3* delims=" %%a in (blocks.txt) do (
        echo %%a >>blocks2.txt)
       
3.        findstr /v "^$" "blocks.txt" >>blocks2.txt

4.        findstr /BRC:"^[ ]*[^ ]" "blocks.txt" >> "blocks2.txt"

5.        for /f "eol= delims=" %%A in (blocks.txt) do (
        echo %%A >>blocks2.txt)

ничего не помогло.
Какие еще есть предложения?
P.S. Без использования sed, awk и т.п. сторонего софта.

Iska 11-03-2016 14:24 2614944

Что значит «удалить пробелы, …переносы строк»? Как должно в итоге выглядеть, например, это:
Код:

major minor  #blocks  name



  7        0      1254 loop0

  7        1      32768 loop1

 254        0    163840 zram0

?

Foreigner 11-03-2016 14:32 2614948

Цитата:

Цитата blackeangel
необходимо удалить пустые строки, пробелы и/или переносы строк. »

Что должно получиться в результате? Одна единственная строка символов без пробелов?
Код:

@echo off
setlocal

for /f "tokens=*" %%i in (1.txt) do call:0 %%i
goto:eof

:0
set "n=%*"
0>nul set /p="%n: =%"


blackeangel 11-03-2016 18:24 2615021

Должно получиться такое
Код:

major minor  #blocks  name
  7        0      1254 loop0
  7        1      32768 loop1
 254        0    163840 zram0
 179        0  15392768 mmcblk0
 179        1      3072 mmcblk0p1
 179        2      5120 mmcblk0p2
 179        3      10240 mmcblk0p3
 179        4      10240 mmcblk0p4
 179        5        512 mmcblk0p5
 179        6        512 mmcblk0p6
 179        7      16384 mmcblk0p7
 179        8      16384 mmcblk0p8
 179        9      8192 mmcblk0p9
 179      10      10240 mmcblk0p10
 179      11        512 mmcblk0p11
 179      12      2048 mmcblk0p12
 179      13      6144 mmcblk0p13
 179      14      8192 mmcblk0p14
 179      15      5120 mmcblk0p15
 179      16      5120 mmcblk0p16
 179      17      1024 mmcblk0p17
 179      18      32768 mmcblk0p18
 179      19      37888 mmcblk0p19
 179      20    1572864 mmcblk0p20
 179      21    409600 mmcblk0p21
 179      22  13213184 mmcblk0p22
 179      23      16384 mmcblk0p23
 179      96      4096 mmcblk0rpmb
 179      64      4096 mmcblk0boot1
 179      32      4096 mmcblk0boot0
 179      128  31207424 mmcblk1
 179      129  31203328 mmcblk1p1


blackeangel 11-03-2016 18:29 2615023

Вот файлы которые помогут понять

greg zakharov 11-03-2016 18:29 2615024

В чем сложность?
Код:

findstr /virc:"^$" file

blackeangel 11-03-2016 18:52 2615031

Цитата:

Цитата greg zakharov (Сообщение 2615024)
В чем сложность?
Код:

findstr /virc:"^$" file

В том что остается тот же файл без изменений

greg zakharov 11-03-2016 19:06 2615034

Цитата:

Цитата blackeangel
В том что остается тот же файл без изменений

Не бздите, сударь: никто до Вас не жаловался.

blackeangel 11-03-2016 19:10 2615035

greg zakharov, сударь извольте проверить, во вложениях я выкладывал файл blocks.txt. попробуйте.

Iska 11-03-2016 19:59 2615049

greg zakharov, там по-идиотски сделанный то ли вывод утилиты, то ли разбор этого вывода, я не разбирался. В итоге имеем — «CrCrLf».

blackeangel, откуда берётся этот файл? Как получается, что часть строк заканчивается Cr, часть CrLf?

blackeangel 11-03-2016 20:17 2615053

Iska, в батнике написано как он берется. Через adb с телефона берутся все блоки и пишутся в файл. Строка там где adb.exe shell cat /proc/partitions > blocks.txt. По сути этот partitions есть файл, но как он берется хз, тк на телефоне он пуст.
В общем имеем что имеем.

Iska 11-03-2016 21:08 2615063

Делайте точно так же, как при разборе результатов «wmic.exe» — двойным разбором по «for /f», наподобие:
Код:

@echo off

for /f "usebackq delims=" %%i in ("blocks.txt") do for /f "usebackq delims=" %%j in ('%%i') do echo %%j

В результате получите нормальный вывод с обычными же «CrLf».

blackeangel 11-03-2016 21:49 2615075

Iska, спасибо за мысли о том как берется этот файл. Немного через коленку но получаю файл нормальный теперь. Еще раз спасибо за мысли и участие :)


Время: 21:57.

Время: 21:57.
© OSzone.net 2001-