Написать скрипт, который в заданном файле удаляет:
а)пустые строки
б)строки, содержащие заданное слово.
мои мысли по поводу этого:
а)sed '/^$/d' example.txt удалит пустые строки из файла example.txt
б)sed -i /text/d file удалит из file все строки, содержащие text.
Как для любого заданного файла это прописать?
Написать скрипт, который в заданном файле удаляет:
синтаксические ошибки
/ / /
# # #
| | |
наводит на мысль?
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.
Следовательно:
а)
sed '/^$/D' example.txt - удалит все пустые строки;
б)
sed -i 'text/d' example.txt - правильно, удалит все встречающиеся text.
PS. moshell, вроде бы все правильно:
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~$
сорри. забыл что perl и sed различаются в синтаксисе
Ребята, помогите. Как для любого заданного файла это прописать? читаю теорию не понимаю. объясните,ПОЖАЛУЙСТА! как параметр задать нужно?
for i in * ; do sed 's/abra/cadabra/g' $i; doneили
sed -i 's/abra/cadabra/g' *Это обработает вообще все файлы (насколько хватит длины командной строки) и будет пытаться обрабатывать каталоги. Я вас предупредил.
Можно
find . -name *txt -exec sed ... сколько кстати в bash можно запихать в ОДНУ строку?
имею в виду длинну строки. максимум символов
сколько кстати в bash можно запихать в ОДНУ строку?
Это от компа сильно зависит. Теоретически, на сколько хватит памяти, но в реальности, если не ошибаюсь, много меньше. Попробуйте какой-нибудь configure запустить, он это высчитывает среди прочих тестов.
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
Ребята, помогите. Как для любого заданного файла это прописать? читаю теорию не понимаю. объясните,ПОЖАЛУЙСТА! как параметр задать нужно?
парси @ARGV
чтобы была возможность запускать на выполнение задание под а) или под б) мне с помощью цикла
while
do case .......
esac
done
это делать?
нужно на bash
if ( /regexp/ ) {
any_code
}