Ещё раз повторю, задания призваны укрепить и проверить знания. Когда не можешь что-то сделать, лезешь справочники/интернет/учебники… , восстанавливаешь пробел. И только тогда можешь считать материал изученным и понятым. А насчёт того, надо это Вам лично или нет — вопрос немного философский, лично мне это интересно + доп.знания и умения никогда не лишние. Если Вам нет, то может стоит согласиться с Vlad.V что это не Ваше? Всё-таки программирование это и образ мышления тоже. Вот например 3 варианта 6 заданияawk '
{
n=length
}
n>3{
print substr($0,n-1) substr($0,3,n-4) substr($0,1,2)
}
n<=3' new.file
awk '
BEGIN{
split(n-1 3 1,A,"\0");
split(2 n-4 2,B,"\0");
}
{
n=length;
if(n>4){
for(i in A)
printf("%s",substr($0,A[i],B[i]));
print ""
}
else print
}' new.file
awk -F"\0" -v OFS="\0" '
length>4{
a=$1;
b=$2;
$1=$(NF-1);
$2=$NF;
$NF=b;
$(NF-1)=a
}
1' new.file
Мне было интересно, я тоже не сразу, "на коленке", смог написать работающий код. Но я разобрался, следовательно стал умнее благодаря выполнению заданий, а Вы? Смогли расшифровать код 2-го задания и этот?
во втором, опять же
awk -F"[! ]" '
/SP JUNIOR RACKET/{t=$1}
$4==t&&$4!=""{if($NF>s){s=$NF;i=$3}}
$1==i{print $2}
' query* query* query* | uniq
/SP JUNIOR RACKET/{t=$1} - находим SP JUNIOR RACKET и записываем в переменную t
$4==t&&$4!="" - это наверное проверка, содержится ли SP JUNIOR RACKET в 4-м столбце
{if($NF>s){s=$NF;i=$3}} $1==i{print $2} это найти максимальный элемент и записать его в $1
могу ошибаться
awk '
{
n=length
}
n>3{
print substr($0,n-1) substr($0,3,n-4) substr($0,1,2)
}
n<=3' new.file
тут, если длина больше 3, то печатаем строку от 0 до n-1 (т.е. всю), потом вставляем конец строки (точнее два последних символа), это substr($0,3,n-4) и потом первые два символа substr($0,1,2)
Это моё предположение на вскидку, что делает программа, написанная на незнакомом мне языке.
P.S.
Azure, если программирование не моё, то Вы, как хороший программист, скажите например, что делает этот код? Этот фрагмент кода (кстати, написанный мною), который запускает в микроконтроллере кое-что. Что именно он запускает? Я даже так Вам упростил задачку.
RST_CLK_HSEconfig(RST_CLK_HSE_OFF);
RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV1);
RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv1, RST_CLK_CPU_PLLmul5);
RST_CLK_CPU_PLLcmd(ENABLE);
RST_CLK_CPU_PLLuse(ENABLE);
Это язык С.
было бы интересно увидеть ваши предположения.
Пользователь решил продолжить мысль 10 Ноября 2014, 14:28:39:
И в третьем задании, где надо найти количество хардлинков в /etc/ у меня проблема в следующем.
делаю так
ls -l /etc/ | cut -d ' ' -f2 | sort
но беда в том, что нужные мне цифры (2-й столбец)
-rw-r--r-- 1 root root 1343 янв. 9 2007 wodim.conf
drwxr-xr-x 2 root root 4096 окт. 22 09:29 wpa_supplicant
drwxr-xr-x 10 root root 4096 окт. 22 09:29 X11
drwxr-xr-x 7 root root 4096 окт. 22 09:30 xdg
drwxr-xr-x 2 root root 4096 окт. 22 09:30 xml
drwxr-xr-x 2 root root 4096 окт. 22 09:30 xul-ext
-rw-r--r-- 1 root root 349 сент. 11 18:18 zsh_command_not_found
отделены в основном на два пробела, и команды выводит только 10 (т.к. он ограничен одним пробелом)
ка сделать, чтобы перед cut преобразовывать пробелы, допустим в табуляции? т.е. надо два пробела перевести в табуляцию, и одиночный пробел тоже перевести в табуляцию.
P.S. Конечно, можете опять говорить, что я бездарь и вообще что забыл в программировании, но позволю себе небольшую поправку на то, что вопросы возникающие в процессе выполнения, задаю на форуме (разве не для этих целей предназначен форум?)