Это должно сработать:
awk -F- '$1!=a{printf "%s", $1} {printf "-%s&", $2} {a=$1}' file | sed 's/&$/\n/g'
Outout:
4480-1&-2&-3&-15&4581-1&-2&-3&-4
Explantion:
awk -F-
delimiter is -
$1! =a{printf "%s", $1}
выведите первую часть 4480
, если она не совпадает с последней обработанной строкой{printf "-%s&", $2}
выведите вторую часть с &
в конце{a=$1}
установите a в обработанную строкуsed 's/&$/\n/g'
уберите последний символ, который является &
и добавьте новую строку Можно использовать переменную окружения IGNOREEOF
в режиме bash. Так что экспорт IGNOREEOF=42
и вам нужно будет нажать Ctrl+D
сорок два раза, прежде чем он фактически выйдет из вашей оболочки.
В наборе
также есть -о игнорировании
.
Прочтите документацию по оболочке. Существует два типа профилей. .bash_profile выполняется, когда вы уже вошли в систему и делаете что-то, например, открываете новый терминал. Другой тип профиля используется при первоначальном входе в систему и, как ни странно, называется профилем авторизации. Чтобы сделать то, что Вы хотите сделать, попробуйте поместить свои вещи в .profile
.Вас смущают несколько вещей:
, которые
не отражают псевдонимы. Поэтому, когда вы пытаетесь проверить, был ли создан псевдоним, используя , который
вам не поможет. Вместо этого запустите псевдоним
без аргументов; он покажет все действующие псевдонимы. Пример:
anthony@Zia:~$ foo команда не найдена anthony@Zia:~ [$?=127]$ псевдоним foo="echo hi anthony@Zia:~$ foo привет Энтони@Зия:~$ что за фууууууууууууууууууууу... anthony@Zia:~ [$?=1]$
Псевдонимы влияют на панцирь, а не на другие вещи. Когда делают
, затмение
и т.д. пытаются запустить gcc
, псевдонимы псевдонимов псевдонимов не будут иметь значения. Вы также можете экспортировать только переменные, а не псевдонимы. Вот пример (опять же с этим псевдонимом foo) perl, пытающегося его запустить:
anthony@Zia:~$ perl -Mautodie=system -E 'system("foo")'. "Фу" не началось: "Нет такого файла или директории" в строке 12 (eval 6). в строке -e 1
Большинство компилирующих объектов работают cc
, c++
и т.д., а не gcc
. Так что даже если бы вы переопределили gcc
, это, скорее всего, не сработало бы.
Лучший подход - сказать make
и т.д., какой компилятор использовать:
make CC=/path/to/myrtgcc target
Вы также можете передать это в окружении при выполнении /.configure
для программ, которые используют autoconf.
Второй подход заключается в создании простых shell скриптов с именами gcc
, cc
и т.д. в (например) ~/bin
и поместить их первыми в свой путь. Скрипты выглядели бы примерно так:
#!/bin/sh
exec /path/to/myrtgcc "$@"
и вы бы поместили их первыми в PATH, используя что-то подобное в вашем .bashrc
:
PATH="$HOME/bin:$PATH"
export PATH