powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Удаление строк из файла.
12 сообщений из 12, страница 1 из 1
Удаление строк из файла.
    #39499661
proxy_911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день коллеги,
Переда мной стоить задача:

Удалить строки которые содержавшие менее 100 символов из файлов file_1, fire_2, file_3, file_n.
Есть несколько файлов .txt с разними названием, кол-во строк тоже разные на файлах..
Мне нужно удалить строки выделенным красным цветом которые содержать менее 100 символов и переместить этот файл на другую папку!
Причем этот процедуру надо выполнять каждый час с помощью Cron..
Не подскажите как мне это реализовать ?

Пример содержания файла см ниже.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
31,500002,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000,
31,500003,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000,
31,500004,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000
[color=red]31,500004,,,436039564397054,900902506,,20170628001525[/color]
31,500005,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000,
31,500006,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000,
31,500007,,,436039564397054,900902506,,20170628001525,1782579200,,,,,358627044209290,,02,60,vs,,30000
[color=red]31,500008,,,436039564397054,900902506,,20170628001525[/color]



Буду благодарен за каждый совет!!
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39499672
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxy_911Не подскажите как мне это реализовать ?

grep с соответствующей регуляркой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39499677
proxy_911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А можете привести пример ?
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39499827
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxy_911Dimitry Sibiryakov,

А можете привести пример ?
Не то. Есть на то awk (gawk), да и проще можно, sed'ом, в вашем случае.
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500114
fortress
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxy_911,

попробуй так, оставит строки длиной более 100 символов:
Код: powershell
1.
 sed -n '/^.\{100\}/p' src  > dest


Подсмотрено здесь .
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500297
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grep побыстрее сработал (input.file около 250К строк)

Код: sql
1.
2.
3.
$ time sed -n '/^.\{100\}/p' <input.file >output.file
0.63user 0.08system 0:00.72elapsed 99%CPU (0avgtext+0avgdata 2900maxresident)k
0inputs+120304outputs (0major+277minor)pagefaults 0swaps



Код: sql
1.
2.
3.
$ time grep -P '^.{100,}$' <input.file >output.file
0.31user 0.06system 0:00.37elapsed 99%CPU (0avgtext+0avgdata 2248maxresident)k
0inputs+120304outputs (0major+109minor)pagefaults 0swaps
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500314
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалит из файлов строки меньше 100 символов и сохранит в подкаталоге new с тем же именем.
Код: php
1.
2.
3.
#!/bin/sh
mkdir new
perl -lne 'length>100 ? open(DST,">>","new/$ARGV") && print DST : 0'  file_1 file_2 file_3




Замечание: сей однострочник вполне сгодится, если строк в файлах немного, а если > 1000,
то лучше переписать поприличней.
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500337
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно однострочник и полаконичнее;
файлы отредактируются по месту, старые версии сохранятся в каталоге old ,
но будет некоторый косяк в том, что файлы, где не было совсем длинных строк, станут пустыми.

Код: php
1.
2.
3.
#!/bin/sh
mkdir old
perl -i'old/*' -lne 'print if length>100'  file_1 file_2 file_3 file_4 file_5
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500414
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklegrep побыстрее сработал (input.file около 250К строк)Самое удивительное, что тормоз здесь awk:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
$ cat /dev/urandom | tr -cd '[:alnum:]' | fold -w200 | head -n250000 > test.txt

$ time perl -nle 'print if /^.{100}/' test.txt |wc -l
250000

real	0m0.270s
user	0m0.209s
sys	0m0.054s

$ time perl -nle 'print if length>99' test.txt | wc -l
250000

real	0m0.166s
user	0m0.112s
sys	0m0.051s

$ time awk 'length($0)>99' test.txt | wc -l
250000

real	0m1.994s
user	0m1.774s
sys	0m0.161s
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500820
proxy_911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги всем спасибо, получилось, тепер все понятно с удалением.
Тепер мне как проверить наличия файла на папке ? Если есть есть файл то выполнял указанный действии ,
если нет то сканировал другую папку на наличия файла, если на втором папке тоже отсутсвуеть файл то просто на выход ..
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39500921
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proxy_911проверить наличия файлаtest -f /path/to/file


proxy_911Если есть есть файл то выполнял указанный действии ,
если нет то сканировал другую папку на наличия файла, если на втором папке тоже отсутсвуеть файл то просто на выход ..Стандартно if...elseif
...
Рейтинг: 0 / 0
Удаление строк из файла.
    #39501143
proxy_911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, всем спасибо ! Работало !!!!!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Удаление строк из файла.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]