LINUX.ORG.RU

так работает?

[code=shell] awk '{split(«'$x'»,c,"-"); print с[1], c[2]; }' [/code]

lazyklimm ★★★★★
()
Ответ на: комментарий от sdio

Вот велосипед

author=` echo "Oscar Wilde-The Picture of Dorian Gray" | awk '{split($x,c,"-"); print c[1]; }' `

title=` echo "Oscar Wilde-The Picture of Dorian Gray" | awk '{split($x,c,"-"); print c[2]; }' `
echo "Author=$author";
echo "Title=$title";

eval `awk '{split($x,c,"-"); printf(«c1=%s; c2=%s;», с[1], c[2])}'`

awk: 1: unexpected character 0xd1 Мне надо далее будет сформировать текстовый файл, используя эти переменные. Мои кросс работает, есть ли более красивое решение?

blokant ★★
() автор топика
Ответ на: комментарий от legolegs
$ read author title <<< $(awk '{split($x,c,"-"); print c[1], c[2]; }' <<<  "Jay-I am the ruler of clit")
$ echo author=\"$author\" title=\"$title\"
author="Jay" title="I am the ruler of clit"
legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Ликбез:

«команда <<< строка» - это то-же самое, что «echo строка | команда», но второй вариант не работает правильно, когда команда - это read. Чтобы read действительно сохранил строки (а не съел stdin в пустоту) в переменных он должен стоять в начале конвейера.

legolegs ★★★★★
()
Ответ на: комментарий от blokant

У тебя одна из букв си - русская. Во втором варианте всё работает.

legolegs ★★★★★
()
Ответ на: комментарий от blokant

>Мне надо далее будет сформировать текстовый файл, используя эти переменные.

Так, стоп. Если тебе нужен текстовый файл, то почему не сформировать его средствами awk? awk крут. Я авком ресурсы игр распаковывал, а тут какой-то сраный текстовый файл сделать.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

No command substitution but subshell redirection и на 2 символа короче

read author title < <(awk '{split($x,c,"-"); print c[1], c[2]; }' <<<  "Jay-I am the ruler of clit")

Спасибо за <<< «srting» , думал только переменные так можно передавать

zolden ★★★★★
()
Ответ на: комментарий от blokant
#! /bin/awk -f
BEGIN {
FS="-"
print "INSERT INTO `books` (`author`,`title`,`othershit`,`filename`) VALUES"
}
{
if (NR!=1) { print "," }
printf "(`"$1"`,`"$2"`,`"$3"`,`"$0"`)";
}
END {
print ";"
}
$ cat test.txt 
aut-titl-shit1-blah.pdf
joe-clit-shit2-foo.fb2
$ ./t.awk < test.txt 
INSERT INTO `books` (`author`,`title`,`othershit`,`filename`) VALUES
(`aut`,`titl`,`shit1`,`aut-titl-shit1-blah.pdf`),
(`joe`,`clit`,`shit2`,`joe-clit-shit2-foo.fb2`);
legolegs ★★★★★
()
Ответ на: комментарий от legolegs

сенкс, напомнило Pascal, никогда не писал отдельный .awk

blokant ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.