Удаление поворяющихся фраз через bash

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

rogoznik
Сообщения: 10048
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Удаление поворяющихся фраз через bash

#21

01 мар 2019, 07:12

Chocobo писал(а):
28 фев 2019, 23:54
Давай попробуем укоротить и ограничиться функциями самого баша, без вызова утилит
Сколько не гуглил - все примеры сбыли с sed.
Вот только тут вывод ты сделал, а ведь надо обратно в тот же файл засунуть и в том же порядке. Хотя можно записать сначала в массив, удалить данные из файла(тут придется всяко вызывать какие-то утилиты типа cat /dev/null > listoflines.txt) - возможно есть и другой способ очистить файл, а потом записать в файл
Типа такого

Код: Выделить всё

#! /bin/bash

i=0
s=/home/minter/Exchange/Curious/

while read LINE; do
    array[$i]=$(echo "${LINE##*$s}")
    i=$(($i+1))
done < 1.txt

cat /dev/null > 1.txt

for ((a=0; a < ${#array[*]}; a++))
do
    echo "${array[$a]}" >> 1.txt
done

ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Удаление поворяющихся фраз через bash

#22

01 мар 2019, 09:46

darkfenix писал(а):
01 мар 2019, 07:12
Вот только тут вывод ты сделал, а ведь надо обратно в тот же файл засунуть и в том же порядке
Ну а тут я бы не стал так упираться на само условие "в тот же файл". Перенаправить stdout в соседний файл, и фиг с ним)
bash script.sh > edited.txt
или подсунуть следом результативный файл вместо исходного, когда отработает цикл
bash script.sh > edited.txt; mv edited.txt listoflines.txt

Можно и не выходя на уровень запуска, запихать туда же внутрь конструкции

Код: Выделить всё

#! /bin/bash
str=/home/minter/Exchange/Curious
while read LINE; do
echo "${LINE##*$str}"
done < listoflines.txt > edited.txt
mv edited.txt listoflines.txt
Изображение
   
Изображение

Аватара пользователя

rogoznik
Сообщения: 10048
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Удаление поворяющихся фраз через bash

#23

01 мар 2019, 10:48

В общем, накидали ТСу вариантов - пусть теперь сам решает как ему удобней будет
ИзображениеИзображение

Аватара пользователя

Автор темы
madesta
Сообщения: 2019
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Удаление поворяющихся фраз через bash

#24

01 мар 2019, 12:33

Недоработочка, а точнее выразиться, хотелось бы расширения функционала форума. Второй раз сталкиваюсь с ситуацией, когда конкретная помощь оказана несколькими вариантами решения. А отметить их все как решение в рамках существующего механизма невозможно и приходится ограничиваться благодарностями, отдав "решено" первому рабочему варианту. Хотя по отношению к остальным решениям это, по моему мнению, будет не совсем справедливым.

В формулировке задачи тоже, признаю, нужно было дать больше информации. В частности, касается указания того, что конкретно необходимо нужно было удалить из каждой строки. А то, получается, упоминания /path/ было недостаточно.

Хотелка была предназначена для совершенствования процедур автоматизации операций, в ходе которых в папках обмена удаляется контент старше N дней и по каждой папке формируется отчёт с перечнем удаляемых данных. Со временем, наличие в файлах отчётов длинных строк, в которых повторяется путь (напр., /home/minter/Exchange/Curious) стало вызывать неудовольствие в плане удобства чтения этих файлов.
Увы, самостоятельно осилить задачу мозгов не хватило. :dash2:

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей