Почему непрерывный сон обозначается буквой «D»?

Вы можете сделать:

sed 's/\(\.[^"[:blank:]]*\)[[:blank:]]*"/\1"/g'

То есть удалить последовательность пробелов, следующих за . , за которым следует последовательность символов, не являющихся пробелами, или "и за которыми следует "

Чтобы удалить пробелы перед каждым другимсимволом двойной кавычки в каждой строке вы можете сделать что-то вроде:

sed 's/[[:blank:]]*"/"&/g
     s/\(\([^"]*"\)\{3\}\)[[:blank:]]*"/\1"/g
     s/"\([^"]*"\)/\1/g'

То есть:

  1. Вставить дополнительный "перед каждым <пробелы>"
  2. Изменить все "<пробелы>""<пробелы>"до "<пробелы>"""
  3. Удалите все остальные ", чтобы отменить вставки in 1

Или более простым способом с awk:

awk -F \" -v OFS=\" '
  {
    for (i = 2; i <= NF; i += 2 )
      sub(/[[:blank:]]*$/, "", $i)
    print
  }'

Обратите внимание, что trне будет сжимать символы, если вы не используете опцию -s. Скорее всего, вы забыли указать расширение параметра или подстановку команды, содержащую вывод tr.

В любом случае, trнельзя использовать для этой задачи. просто инструмент транслитерации.Все, что он может сделать, это перевести/удалить/сжать всесимволы пробела. Он не может переводить/удалять/сжимать только некоторыепробелы.

1
04.03.2016, 01:43
1 ответ

Из 4BSD ps man page:

Состояние задается последовательностью из четырех букв, например, ``RWNA''. Первая буква указывает на запускаемость процесса: R для запускаемых процессов, T для остановленные процессы, P для процессов, находящихся в ожидании страницы, D для процессов, находящихся в дисковом (или другом краткосрочном) ожидании, S для процессов, находящихся в состоянии сна менее 20 секунд, и I для простаивающих (спящих более 20 секунд) процессов.

5
27.01.2020, 23:20

Теги

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