awk скрипт
39 отговора
0 прегледа
awk скрипт
Здравейте имам следния проблем , опитвам се да напиша скрипт който да копира съдържанието на един текстови файл , и до го paste-не на определен ред на всички .txt файлове в определена директория ползвайки awk. Предварително благодаря за помощта.
Re: awk скрипт
Я ... За пръв път нещо интересно в този клуб. И до къде си стигнал?
Господ ще ми прости греховете. Това му е работата.
Господ ще ми прости греховете. Това му е работата.
Re: awk скрипт
Само си мислиш че се опитваш или имаш някакъв резултат който евентуално можеш да постнеш?
Колегата който ти е отговорил преди мен разбира много, но тук не е място да пишем безплатни домашни и ако искаш да ти се помогне... постарай се повечко.
Колегата който ти е отговорил преди мен разбира много, но тук не е място да пишем безплатни домашни и ако искаш да ти се помогне... постарай се повечко.
Re: awk скрипт
Това ми е скрипта:
ARGS=2
E_WRONGARGS=85
if [$# -ne "ARGS"]
then
echo "Usage: directory template.txt"
exit $WRONGARGS
fi
args=("$@")
temp=$RANDOM
for file in $(ls $1/*.txt)
do
awk 'NR==10 {print "test"}1' $file>$temp
mv $temp $file
done
Така това претърсва всички txt файлове в директорията зададена като 1-ви аргумент на скрипта и на 11 ред шляпа test, аз обаче искам да е съдържанието на темплейта , който е 2-ри аргумент , пробвах доста варианти но нещо не успях да го наглася.
ARGS=2
E_WRONGARGS=85
if [$# -ne "ARGS"]
then
echo "Usage: directory template.txt"
exit $WRONGARGS
fi
args=("$@")
temp=$RANDOM
for file in $(ls $1/*.txt)
do
awk 'NR==10 {print "test"}1' $file>$temp
mv $temp $file
done
Така това претърсва всички txt файлове в директорията зададена като 1-ви аргумент на скрипта и на 11 ред шляпа test, аз обаче искам да е съдържанието на темплейта , който е 2-ри аргумент , пробвах доста варианти но нещо не успях да го наглася.
Re: awk скрипт
Довечера ще го погледна.
Edit: Като гледам това не е awk а bash скрипт. Нищо, че се ползва и awk.
Господ ще ми прости греховете. Това му е работата.
Edit: Като гледам това не е awk а bash скрипт. Нищо, че се ползва и awk.
Господ ще ми прости греховете. Това му е работата.
Редактирано от Бokop на
Re: awk скрипт
Много неграмотно написан bash скрипт.
The last good thing written in C was Franz Schubert's Symphony No. 9.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
Пак ще сгреша да ти кажа нещо сериозно. Това е типично в твой стил. Вместо да се заяждам, че е неграмотно написан аз се радвам, че съм видял нещо с наченки на смисленост тук. На тебе май ти се четат теми само за каски и тениски с нинджи.

Господ ще ми прости греховете. Това му е работата.
Господ ще ми прости греховете. Това му е работата.
Re: awk скрипт
Нямам претенциите да съм скрипт гуру, щом можеш напиши го по грамотно да се научим и ние. Както каза колегата има хора който живеят да се заяждат, за съжаление предимно в бг форумите. Ако ще помагаш супер, ако не приятен ден!
Re: awk скрипт
Ами например това:
for file in $(ls $1/*.txt)
съвсем спокойно може да се замени с
for file in $1/*.txt
The last good thing written in C was Franz Schubert's Symphony No. 9.
for file in $(ls $1/*.txt)
съвсем спокойно може да се замени с
for file in $1/*.txt
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
Щото ти каза нещо сериозно в тази тема, нали? Присмял се хърбел на щърбел.
The last good thing written in C was Franz Schubert's Symphony No. 9.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
Ок , спестихме 5 символа , даи сега едно рамо с това
awk '/string/ {c=6} (c--) {if (NR!=1) {print "test"}1}1' filename
как да копира съдържанието на файл 6 реда след string, а не да набивам след print това което искам
awk '/string/ {c=6} (c--) {if (NR!=1) {print "test"}1}1' filename
как да копира съдържанието на файл 6 реда след string, а не да набивам след print това което искам
Re: awk скрипт
Спестихме напълно малоумното изпълнение на цяла команда.
Не знам, awk не използвам.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Не знам, awk не използвам.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Редактирано от | на
Re: awk скрипт
Така имаме напредък
cat $2
while read line
do
awk -v template=$line '/string/ {c=6} (c--) {if (NR!=1) {print template}1}1' filename
done<$2
Сега вкарва съдържанието на темплейт файла $2 в този който искам да едитвам, но се оказа, че ако в темплейта на един ред има една дума всичко е ОК , но ако има 2 думи с разстояние между тях ми вади грешка:
cannot open file '/string/ {c=6} (c--) {if (NR!=1) {print template}1}1' for readind
cat $2
while read line
do
awk -v template=$line '/string/ {c=6} (c--) {if (NR!=1) {print template}1}1' filename
done<$2
Сега вкарва съдържанието на темплейт файла $2 в този който искам да едитвам, но се оказа, че ако в темплейта на един ред има една дума всичко е ОК , но ако има 2 думи с разстояние между тях ми вади грешка:
cannot open file '/string/ {c=6} (c--) {if (NR!=1) {print template}1}1' for readind
Re: awk скрипт
s/template=$line/template="$line"/
The last good thing written in C was Franz Schubert's Symphony No. 9.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
Да усетих се , и последен бъг , в темплейта имам :
DRIVE "drive_1"
{
}
а го получавам огледално в новия файл
}
{
DRIVE "drive_1"
Някакви предложения ?
DRIVE "drive_1"
{
}
а го получавам огледално в новия файл
}
{
DRIVE "drive_1"
Някакви предложения ?
Re: awk скрипт
Ами скрипта ти е съвсем малоумен и "обръща" файла. Пробвай с файл със съдържание:
1
2
3
4
5
и ще се увериш сам :)
The last good thing written in C was Franz Schubert's Symphony No. 9.
1
2
3
4
5
и ще се увериш сам :)
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
хаха е видях че е малоумен и го обръща , как да не го обръща е въпроса
Re: awk скрипт
Защо се занимаваш с неща, от които не разбираш? :)
The last good thing written in C was Franz Schubert's Symphony No. 9.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: awk скрипт
Ами не съм се родил научен :) Не можеш ли да обясниш къде ми е грешката вместо да водим по-малоумни и от скрипта ми спорове :)
Re: awk скрипт
Грешката ти е, че се опитваш да използваш awk за нещо, за което не е удобен.
The last good thing written in C was Franz Schubert's Symphony No. 9.
The last good thing written in C was Franz Schubert's Symphony No. 9.