- Объединение строк bash, XAnder, 19:35 , 31-Авг-12 (1) –1
> Как это можно сделать? начала изучать sed, но что-то не могу никак > тут его применить.sed принципиален? Если нет, то всё просто, но нудно: $ cat file.txt | perl -ne 'chomp; if(/^\+/) {$s=$_} elsif(/-$/) {print "$s $_\n"; $s=""} elsif($s) {$s.=" $_"} else {print "$_\n"}'
- Объединение строк bash, ДорогойДрук, 00:28 , 01-Сен-12 (2) +2
>> Как это можно сделать? начала изучать sed, но что-то не могу никак >> тут его применить. > sed принципиален? Если нет, то всё просто, но нудно: > $ cat file.txt | perl -ne 'chomp; if(/^\+/) {$s=$_} elsif(/-$/) {print "$s > $_\n"; $s=""} elsif($s) {$s.=" $_"} else {print "$_\n"}' ООО да, пёрл здесь очень кстати :) cat file.txt | tr -d "\n" | sed s/-/-"\n"/g Вам не кажется, что так будет несколько проще?
- Объединение строк bash, anonymous, 13:53 , 01-Сен-12 (3)
>> Как это можно сделать? начала изучать sed, но что-то не могу никак >> тут его применить. > sed принципиален? Если нет, то всё просто, но нудно: > $ cat file.txt | perl -ne 'chomp; if(/^\+/) {$s=$_} elsif(/-$/) {print "$s > $_\n"; $s=""} elsif($s) {$s.=" $_"} else {print "$_\n"}' Perl принципиален? Если нет, то:
#!/usr/bin/expect -- log_user 0 spawn bash set outfile {} expect "\\$" {exp_send -- "cat file.txt\n"} expect { "\\$" {} -re "\n(\\+.*-)+?" {lappend outfile $expect_out(1,string); exp_continue} } set outfile [string map {\r "" \n " "} $outfile] foreach list $outfile {puts stdout $list}
- Объединение строк bash, allez, 15:53 , 01-Сен-12 (4) +2
$ cat file + 123 456 789 - + 234 567 890 -$ cat file | tr "\n" " " | sed 's/- /-\n/g' + 123 456 789 - + 234 567 890 -
- Объединение строк bash, михалыч, 19:04 , 01-Сен-12 (5) +1
чисто "чистый" sed ))
sed -e :a -e '/[0-9]$/N; s/\n/ /; ta' file
- Объединение строк bash, михалыч, 06:57 , 02-Сен-12 (6)
sed -e :a -e '/[-]$/\!N; s/\n/ /; ta' file короче, хотел "короче" ))
- Объединение строк bash, Andrey Mitrofanov, 13:10 , 02-Сен-12 (7) +1
> sed -e :a -e '/[-]$/\!N; s/\n/ /; ta' file короче, хотел "короче" )) Во-первых, "[-]$" -> "-$". А во-вторых, по поводу "s/\n/": работа с символами перевода строки в _sed-е это такой _страшный тёмный лес (vs версии*реализации), что лучше бы и не начинать... (Жду одобрения от посикс-активистов!). В-третьих, про короче: -e -e не нужен, "\!" не едет! sed ':a /-$/!N;s/\n/ /;ta' В-четвёртых, я б предпочёл написать ':a /-$/!{N;s/\n/ /g;ba}' В-пятых, проверив с не "-"-данными перед "+", добавил бы ':a /^\+/{/-$/!{N;s/\n/ /;ba}}' ... ...но это уж точно ником не нуд^Hжно.%)
- Объединение строк bash, Andrey Mitrofanov, 13:20 , 02-Сен-12 (8)
> лучше бы и не начинать... (Жду одобрения от посикс-активистов!).Хотя, часть активистов больше возбудится от sed ':a /-$/!{N;s/\ / /;ba}'
- Объединение строк bash, anonymous, 09:10 , 07-Сен-12 (10)
>> лучше бы и не начинать... (Жду одобрения от посикс-активистов!). > Хотя, часть активистов больше возбудится от > sed ':a /-$/!{N;s/\ > / /;ba}' Мы тут старались-старались, а от топикстартера даже спасибо не дождешься! ;)
- Объединение строк bash, richit, 17:49 , 11-Окт-12 (11)
>> лучше бы и не начинать... (Жду одобрения от посикс-активистов!). > Хотя, часть активистов больше возбудится от > sed ':a /-$/!{N;s/\ > / /;ba}' посоветуйте что почитать надо, чтобы понять, что здесь написано ;)
- Объединение строк bash, Andrey Mitrofanov, 11:40 , 12-Окт-12 (13)
>> sed ':a /-$/!{N;s/\ >> / /;ba}' > посоветуйте что почитать надо, чтобы понять, что здесь написано ;) Чтобы _понять, нужно _работать головой, а не читать (в широком/простом смысле~). Ну, man sed почитай, прикладывая прочитанное к выше написанному. 3 подхода по 10. Каждый день. ...До наступления понимания. Но я ничего не гарантировал.
- Объединение строк bash, pavlinux, 02:19 , 24-Окт-12 (14)
- Объединение строк bash, allez, 14:51 , 02-Сен-12 (9)
> А во-вторых, по поводу "s/\n/": работа с символами перевода строки в _sed-е > это такой _страшный тёмный лес (vs версии*реализации), что лучше бы и > не начинать... (Жду одобрения от посикс-активистов!).Воистину акбар! :-)
- Объединение строк bash, Anonim, 22:26 , 11-Окт-12 (12)
> Как это можно сделать? начала изучать sed, но что-то не могу никак > тут его применить.Признайся, ты - бородатый админ, ради лулзов прикидывающийся лицом женского пола :)
|