Распечатайте только строки, которые являются абсолютно числовыми

Это не о псевдонимах. Этим управляют 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).

3
23.10.2012, 01:47
3 ответа
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

4
27.01.2020, 21:13
  • 1
    Можно легко добавить e в регулярном выражении [^0-9. -e]. Тест затем только перестанет работать, когда будет только eв строке. –  Bernhard 23.06.2014, 10:16
  • 2
    Будьте осторожны с выражениями скобки: [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

на основе условий Вы заявляете, что regex мог бы быть возможностью. Я смог заставить следующий GNU awk сценарий работать над RHEL.

 awk '{for (i=1; i<=NF; ++i) {if ($i !~ /^[-]?[[:digit:]]+(\.[[:digit:]]+)?$/) break;if (i == NF)print($0)}}' file.txt
1
27.01.2020, 21:13

Попробуйте что-то вроде этого:

$ 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 
2
27.01.2020, 21:13
  • 1
    PS: Вы попросили awk. Должен использовать grep вместо этого... –  Axel 22.10.2012, 23:40

Теги

Похожие вопросы