Что означает символ '-' в Linux? [duplicate]

Если ваша версия awk поддерживает регулярные выражения в качестве разделителя полей, вы можете сделать это:

$ awk -F'[/.]' '{print $5}' oratab
11
9

в качестве альтернативы, если хотите имя базы данных также напечатано:

$ awk -F'[:/.]' '{print $1,$6}' oratab 
dbname1 11
dbname2 9

Я не уверен, что версии awk для Solaris или AIX поддерживают регулярные выражения в качестве разделителя полей. GNU awk делает. То же самое и с версией FreeBSD. mawk и original-awk тоже.

Это должно работать на Solaris awk (должно работать на любом awk ):

awk -F'/' '/^#/ {next}; /kmad/ {sub(/\..*/,"",$5);print $5}' /etc/oratab

Он пропускает строки, начинающиеся с комментария # , а затем ( для всех строк, содержащих kmad ), он удаляет все, начиная с первого . и далее от поля 5, а затем печатает это поле.

И если у вас есть действительно странная awk , которая не понимает ни регулярных выражений в разделителе полей, ни оператора next , попробуйте следующее:

awk -F'/' '! /^#/ && /kmad/ {sub(/\..*/,"",$5);print $5}' /etc/oratab

и если ваш awk не имеет sub () , значит, это не awk , это додо . Закопайте его и получите настоящую awk .

3
25.03.2016, 08:57
2 ответа

Bash вообще не интерпретирует аргумент - . Это просто соглашение, реализуемое многими программами.

Вы обычно видите это, когда программа обычно работает с файлами, поэтому им нужна какая-то текстовая строка, которая вряд ли будет именем файла для использования, когда вы хотите, чтобы она работала с stdin / stdout вместо этого.

Маловероятно, что вы столкнетесь с системой с файлом, специально названным - , потому что это стандартный символ параметра в Unix. Но поскольку на самом деле разрешено называть файл - - или, в более общем смысле, любой файл , начинающийся с - - многие программы, которые понимают - аргумент также понимает параметр - , означающий «остановить параметры обработки». Это позволяет вам делать такие вещи, как удаление файла с именем - :

$ rm -- -
4
27.01.2020, 21:16

Насколько мне известно, это не конструкция bash, а соглашение. Приложения используют - для обозначения чтения из стандартного ввода или записи в стандартный вывод вместо фактического файла или записи / dev / stdin / dev / стандартный вывод.

1
27.01.2020, 21:16

Теги

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