В AIX ksh команда "mail" считывает данные из стандартного ввода и останавливает цикл, в котором она находится

Помимо grep или sed , вы можете использоватьawk:

{
  for(i=1; i <= NF; i++)
        if ($i ~ /\./)
                out=out" "$i
  print out
  out=""
}

... для сохранения в файл и запуска через awk -f thatfile input1 input2...или:

awk '{ for(i=1; i <= NF; i++) if ($i ~ /\./) out=out" "$i; print out; out="" }' input

... чтобы поместить скрипт в командную строку -.

Awk автоматически разделяет каждую строку ввода для вас на основе пробелов (значения по умолчанию его специальной FSпеременной ). Сценарий перебирает каждое результирующее поле этого разделения и запускает тест :, если значение этого поля содержит точку (, экранированную, поскольку точка — это специальный токен в регулярных выражениях ), а затем добавляет это поле (. ] с пробелом )в новую строку, которую мы выведем в конце. Это приводит к пропуску полей, не содержащих точку. Как только цикл по полям завершен, мы печатаем это восстановленное значение (вout)и сбрасываем его на пустую строку, если во входных данных есть больше строк.

0
10.08.2021, 08:35
0 ответов

Теги

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