Это не о псевдонимах. Этим управляют PATH
переменная среды.
Во многих системах корень имеет /sbin
и /usr/sbin
в PATH
, но обычные пользователи не делают.
Если Вы хотите ввести insmod
и т.д. не вводя полный путь, можно поместить
PATH=$PATH:/sbin
в Вашем файле настроек оболочки (например. .bashrc
в Вашем корневом каталоге).
Или Вы могли посмотреть на /etc/profile
, /etc/environment
, /etc/login.defs
и посмотрите, как это устанавливает PATH
и измените его там.
Быстрый способ найти, какой файл (файлы) заглянуть работает grep -R PATH /etc
(или grep -HIRn PATH /etc
).
awk '
# skip any obvious stuff
/[^0-9. -]/ {next}
{
# test each field for a number
for (i=1; i<=NF; i++)
if ($i + 0 != $i)
next
print
}
'
Это повредится для верных номеров в экспоненциальном представлении: 1.2e1 == 12
на основе условий Вы заявляете, что regex мог бы быть возможностью. Я смог заставить следующий GNU awk сценарий работать над RHEL.
awk '{for (i=1; i<=NF; ++i) {if ($i !~ /^[-]?[[:digit:]]+(\.[[:digit:]]+)?$/) break;if (i == NF)print($0)}}' file.txt
Попробуйте что-то вроде этого:
$ cat data.txt
3 6 2 -4.2 21.2
3 x 4.2 21.2
3 2 2.2.2
$ awk '/^\s*(-?[0-9]+(\.[0-9]*)?\s+)+\s*$/ { print }' < data.txt
3 6 2 -4.2 21.2
e
в регулярном выражении[^0-9. -e]
. Тест затем только перестанет работать, когда будет толькоe
в строке. – Bernhard 23.06.2014, 10:16[0-9. -e]
будет соответствовать любому символу от пространства (ascii 32) кe
(ascii 101). Вы хотите[^0-9. e-]
: для соответствия литеральному дефису это должно быть или первым или последний знак, иначе это определяет диапазон символов. (gnu.org/software/gnulib/manual/html_node / …) – glenn jackman 23.06.2014, 16:05