Ну, после поиска вокруг и чинить различные точки со всего StackOverflow (Ну и дела, я уже люблю это место), большинство проблем уже прошло этот этап. Мне действительно удавалось разработать ответ на мою проблему все же.
, Как создать ресурс:
В моем случае, я хочу создать значок. Это - подобный процесс, неважно, какие данные Вы хотите добавить как ресурс все же.
, Как использовать ресурс:
Большой, таким образом, у нас есть наш новый ресурс и мы жаждем иметь те прекрасные изменяющиеся значки... Как мы делаем это? Ну, удачный нас, C# делает это чрезвычайно легким.
существует статический класс, названный Properties.Resources
, который предоставляет Вам доступ ко всем Вашим ресурсам, таким образом, мой код закончил тем, что был так же прост как:
paused = !paused;
if (paused)
notifyIcon.Icon = Properties.Resources.RedIcon;
else
notifyIcon.Icon = Properties.Resources.GreenIcon;
Сделанный! Законченный! Все просто, когда Вы знаете как, не так ли?
new_variable=$( awk 'BEGIN{RS=ORS=" "}!a[$0]++' <<<$variable );
Вот как это работает:
RS (разделитель входных записей) устанавливается на пробел, поэтому каждый фрукт в переменной $ обрабатывается как запись, а не поле. Уникальная магия без сортировки происходит с! A [$ 0] ++. Поскольку awk поддерживает ассоциативные массивы, он использует текущую запись ($ 0) как ключ к массиву a []. Если этот ключ не был замечен ранее, значение [$ 0] будет равно '0' (значение awk по умолчанию для неустановленных индексов), который затем инвертируется, чтобы вернуть TRUE. Затем я использую тот факт, что awk по умолчанию будет «печатать $ 0», если выражение возвращает ИСТИНА и не заданы «{команды}». Наконец, [$ 0] увеличивается на единицу, так что этот ключ больше не может возвращать ИСТИНА, и поэтому повторяющиеся значения никогда не печатаются. ORS (разделитель выходных записей) также установлен на пробел для имитации входного формата.
Менее краткая версия этой команды, которая дает такой же результат, будет следующей:
awk 'BEGIN{RS=ORS=" "}{ if (a[$0] == 0){ a[$0] += 1; print $0}}'
Должен любить awk =)
ИЗМЕНИТЬ
Если вам нужно сделать это в чистом Bash 2.1+, я бы посоветовал это:
#!/bin/bash
variable="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
temp="$variable"
new_variable="${temp%% *}"
while [[ "$temp" != ${new_variable##* } ]]; do
temp=${temp//${temp%% *} /}
new_variable="$new_variable ${temp%% *}"
done
echo $new_variable;
Эта версия конвейера работает с сохранением исходного порядка:
variable=$(echo "$variable" | tr ' ' '\n' | nl | sort -u -k2 | sort -n | cut -f2-)
Pure Bash:
variable="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
declare new_value=''
for item in $variable; do
if [[ ! $new_value =~ $item ]] ; then # first time?
new_value="$new_value $item"
fi
done
new_value=${new_value:1} # remove leading blank
shell
declare -a arr
variable="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
set -- $variable
count=0
for c in $@
do
flag=0
for((i=0;i<=${#arr[@]}-1;i++))
do
if [ "${arr[$i]}" == "$c" ] ;then
flag=1
break
fi
done
if [ "$flag" -eq 0 ] ; then
arr[$count]="$c"
count=$((count+1))
fi
done
for((i=0;i<=${#arr[@]}-1;i++))
do
echo "result: ${arr[$i]}"
done
Результат при запуске:
linux# ./myscript.sh
result: apple
result: lemon
result: papaya
result: avocado
result: grapes
result: mango
result: banana
ИЛИ если вы хотите использовать gawk
awk 'BEGIN{RS=ORS=" "} (!($0 in a) ){a[$0];print}'
Z Shell:
% variable="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
% print ${(zu)variable}
apple lemon papaya avocado grapes mango banana
В чистом переносимом виде sh
:
words="apple lemon papaya avocado lemon grapes papaya apple avocado mango banana"
seen=
for word in $words; do
case $seen in
$word\ * | *\ $word | *\ $word\ * | $word)
# already seen
;;
*)
seen="$seen $word"
;;
esac
done
echo $seen