78
|
Програмиране / Общ форум / Re: date + ping > logfile.txt
|
-: Jul 14, 2009, 15:50
|
Ако съм разбрал правилно: GeSHi (Bash): ping ... | while IFS= read -r; do printf '%s %s\n' "$(date)" "$REPLY" done
Ако искаш изхода във file: GeSHi (Bash): ping ... | while IFS= read -r; do printf '%s %s\n' "$(date)" "$REPLY" done > outfile
Във file и STDOUT едновременно: GeSHi (Bash): ping ... | while IFS= read -r; do printf '%s %s\n' "$(date)" "$REPLY" done | tee outfile
|
|
|
79
|
Програмиране / Общ форум / Re: AWK събиране на няколко реда в един
|
-: Jul 03, 2009, 14:17
|
GeSHi (): awk 'END { for (k in r) print k, r[k], c[k] } { r[$1] = r[$1] ? r[$1] FS $2 : $2 c[$1]++ } ' infile
GeSHi (Perl): perl -lane' push @{$r{$F[0]}}, $F[1]; print map "$_ @{$r{$_}} ".~~@{$r{$_}}."\n", keys %r if eof ' infile
Zsh: GeSHi (Bash): unset a c typeset -A a c while read -r p i; do [ $a[$p] ] && a[$p]="$a[$p] $i" || a[$p]=$i ((++c[$p])) done<infile for k (${(k)a[@]}) print -r -- $k $a[$k] $c[$k]
|
|
|
80
|
Програмиране / Общ форум / Re: Помощ за bash script
|
-: May 12, 2009, 11:06
|
С awk: awk -F': |\n' '{print>$2".txt"}' RS= big_file За да избегнеш грешката too many open files при някои стари awk версии: awk -F': |\n' '{ f && close(f) print > (f = $2 ".txt") }' RS= big_file
|
|
|
82
|
Linux секция за начинаещи / Настройка на програми / Re: Малко помощ за bash
|
-: Mar 24, 2009, 16:13
|
find . -name '*.txt' -print0 | xargs -0 rm Ей това е най-елегантното решение, таман мислех да го напиша. Другите са малко "за Перник през Бургас"
И защо трябва да използваш две програми ( find и xargs), след като find ( Solaris, BSD и GNU) поддържа/емулира вътрешно xargs с оператора +?
|
|
|
84
|
Linux секция за начинаещи / Настройка на програми / Re: Малко помощ за bash
|
-: Mar 24, 2009, 12:14
|
Защо стреляме по зайци с галбица?
rm -R --interactive=none *.txt -R за рекурсивност, а другото да не те пита на всеки файл
[...]
От man rm | less -p'^ *-r': -r, -R, --recursive remove directories and their contents recursively
... т.е., не е това, което toti84 иска. Това е с bash4, иначе трябва да използваш find: GeSHi (Bash): $ printf '%s\n' **/*.txt 1.txt dir1/2.txt dir1/.3.txt dir1/dir2/4.txt $ rm -R *.txt $ printf '%s\n' **/*.txt dir1/2.txt dir1/.3.txt dir1/dir2/4.txt $ rm -- **/*.txt $ printf '%s\n' **/*.txt $
|
|
|
85
|
Linux секция за начинаещи / Настройка на програми / Re: Малко помощ за bash
|
-: Mar 24, 2009, 12:04
|
С bash4: GeSHi (Bash): shopt -s globstar nullglob rm -- **/*.txt
Ако искаш да включиш и dotfiles прибави dotglob. С която и да е shell и find, който поддържа опцията +: GeSHi (Bash): find -name '*.txt' -exec rm {} +
Ако искаш да не включваш dotfiles: GeSHi (Bash): find ! -name '.?*' -name '*.txt' ...
|
|
|
87
|
Програмиране / Общ форум / Re: Bash script
|
-: Mar 04, 2009, 12:15
|
GeSHi (Bash): #! /bin/sh source_filename='guitar.ogg' target_filename='song.ogg' source_dir='<your_source_dir>' export source_filename target_filename find "${source_dir:=.}" -type d -exec sh -c ' _dir="{}" [ -f "$_dir/$target_filename" ] || { printf "copying %s in %s ... " "$target_filename" "$_dir" [ -r "$_dir/$source_filename" ] || { printf "%s missing or not accessible, skipping ...\n" "$_dir/$source_filename" exit 1 } cp "$_dir/$source_filename" "$_dir/$target_filename" || { printf "error copying %s to %s in %s\n" "$source_filename" "$target_filename" "$_dir" exit 1 } printf "done\n" }' inline \;
|
|
|
89
|
Програмиране / Общ форум / Re: Bash script
|
-: Jan 19, 2009, 14:31
|
Още един: GeSHi (Bash): #! /bin/bash export dest="$HOME/mp3s" # adjust to taste [ -d "$dest" ] || mkdir "$dest" # see above find -name '*.mp3' -type f -exec bash -c ' f="$1" a="${f##*/}" d="$dest/${a% -*}" [ -d "$d" ] || mkdir "$d" && mv -v "$f" "$d" ' - {} \;
|
|
|
90
|
Програмиране / Общ форум / Re: Помощ за един лесничък скрипт
|
-: Dec 28, 2008, 20:22
|
Или с GNU sed(заради -r) и bash: $ ./s x is 5 plus 6 plus 7 plus 8 x is 26 $ cat s #!/bin/bash
eval $(sed -r 's/plus/+/g;s/([^0-9]*)([0-9].*)/echo \1 $((\2))/'<<<$@) С Perl: $ perl -le' ($_ = shift) =~ s/plus/+/g; /(\D*)(.*)/ and print $1, eval $2 ' 'x is 5 plus 6 plus 7 plus 8' x is 26
|
|
|
Страници: 1 ... 4 5 [6] 7 8
|
|