LinuxForum.Fans
Тема

Написать скрипт, который в заданном файле удаляет:

Автор: natalia_nikiforowa 11 сообщений 3879 просмотров
#356194

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


мои мысли по поводу этого:
а)sed '/^$/d' example.txt удалит пустые строки из файла example.txt
б)sed -i /text/d file удалит из file все строки, содержащие text.

Как для любого заданного файла это прописать?

#356197

синтаксические ошибки

/ / /
# # #
| | |


наводит на мысль?

#356200

man sed:

D Delete up to the first embedded newline in the pattern space. Start next cycle, but skip reading from the input
if there is still data in the pattern space.

Следовательно:
а)

text
sed '/^$/D' example.txt

- удалит все пустые строки;
б)

text
sed -i 'text/d' example.txt

- правильно, удалит все встречающиеся text.
PS. moshell, вроде бы все правильно:

text
yars@localhost~$ cat -A test
abc$
def$
xzy$
xyz$
abc$
slack$
deb$
linux$
$
yars@localhost~$
yars@localhost~$ sed '/^$/D' test | cat -A
abc$
def$
xzy$
xyz$
abc$
slack$
deb$
linux$
yars@localhost~$
#356201

сорри. забыл что perl и sed различаются в синтаксисе

#356204

Ребята, помогите. Как для любого заданного файла это прописать? читаю теорию не понимаю. объясните,ПОЖАЛУЙСТА! как параметр задать нужно?

#356205
text
for i in * ; do sed 's/abra/cadabra/g' $i; done

или

text
sed -i 's/abra/cadabra/g' *

Это обработает вообще все файлы (насколько хватит длины командной строки) и будет пытаться обрабатывать каталоги. Я вас предупредил.
Можно

text
find . -name *txt -exec sed ... 
#356206

сколько кстати в bash можно запихать в ОДНУ строку?

имею в виду длинну строки. максимум символов

#356208
"moshell" написал:
сколько кстати в bash можно запихать в ОДНУ строку?

Это от компа сильно зависит. Теоретически, на сколько хватит памяти, но в реальности, если не ошибаюсь, много меньше. Попробуйте какой-нибудь configure запустить, он это высчитывает среди прочих тестов.

text
xargs --show-limit
Your environment variables take up 3389 bytes
POSIX upper limit on argument length (this system): 2091715
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2088326
Size of command buffer we are actually using: 131072

Execution of xargs will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please type the end-of-file keystroke. Warning: /bin/echo will be run at least once. If you do not want that to happen, then press the interrupt keystroke. ^C

#356294
natalia.nikiforowa написал:
Ребята, помогите. Как для любого заданного файла это прописать? читаю теорию не понимаю. объясните,ПОЖАЛУЙСТА! как параметр задать нужно?

парси @ARGV

#356371

чтобы была возможность запускать на выполнение задание под а) или под б) мне с помощью цикла
while
do case .......
esac
done

это делать?


нужно на bash

#356375

if ( /regexp/ ) {
any_code
}

Войдите или зарегистрируйтесь, чтобы ответить.