LINUX.ORG.RU

История изменений

Исправление quantum-troll, (текущая версия) :

sed, awk... зачем эти сложности? Вот решение на почти чистом rc:

#!/usr/bin/env rc
file=file.txt

i='1'
oifs=$ifs
ifs='|'

days=`{sed 1q $file} while(! ~ $i '0' && ! ~ $i '7') {
    if(~ ' *'^$1^'* ' $days($i)) { nl=$i ; i='0' }
    if not ifs=$oifs i=`{ hoc -e $i+1 }
    ifs='|'
}

sed 1q $file
tail -n +2 $file | while(l=`{read}) {
    i='1' while(! ~ $i '0' && ! ~ $i '7') {
	if(~ $i $nl) echo -n '| no '
	if not echo -n '|'$l($i)

	ifs=$oifs i=`{hoc -e $i+1}
	ifs='|'
    }
    echo '|'
}
Как работает:
% ./test.rc Wednesday
| *Name* | *Monday* | *Tuesday* | *Wednesday* | *Thursday* | *Friday* |
| qwe %EDITCELL{ "label, 0, qwe" }% | yes | yes | no | yes | yes |
| asd %EDITCELL{ "label, 0, asd" }% | yes | yes | no | yes | yes |
| zxc %EDITCELL{ "label, 0, zxc" }% | yes | yes | no | yes | yes |

Исходная версия quantum-troll, :

sed, awk... зачем эти сложности? Вот решение на почти чистом rc:

#!/usr/bin/env rc
file=file.txt
oifs=$ifs

i='1'
ifs='|'

days=`{sed 1q $file} while(! ~ $i '0' && ! ~ $i '7') {
    if(~ ' *'^$1^'* ' $days($i)) { nl=$i ; i='0' }
    if not ifs=$oifs i=`{ hoc -e $i+1 }
    ifs='|'
}

sed 1q $file
tail -n +2 $file | while(l=`{read}) {
    i='1' while(! ~ $i '0' && ! ~ $i '7') {
	if(~ $i $nl) echo -n '| no '
	if not echo -n '|'$l($i)

	ifs=$oifs i=`{hoc -e $i+1}
	ifs='|'
    }
    echo '|'
}
Как работает:
% ./test.rc Wednesday
| *Name* | *Monday* | *Tuesday* | *Wednesday* | *Thursday* | *Friday* |
| qwe %EDITCELL{ "label, 0, qwe" }% | yes | yes | no | yes | yes |
| asd %EDITCELL{ "label, 0, asd" }% | yes | yes | no | yes | yes |
| zxc %EDITCELL{ "label, 0, zxc" }% | yes | yes | no | yes | yes |