Проблема с разделением IFS

top(1) отображает сначала запущенные процессы, отсортированные по использованию ЦП, затем заполняет таблицу спящими процессами, отсортированными по PID.

systemd(8) является вариантом init(8) и, вероятно, не будет делать много после загрузки. 70 мс использования ЦП, вероятно, связаны с загрузкой системы. Когда система загружена и работает, у процесса init (PID=1) нет другой цели, кроме как просто оставаться в живых.

Мой systemd(8) использовал CPU в течение 2:25.72 за 125 дней и 12 часов, так что он обновляется очень медленно.

Остальные процессы в этом списке - это некоторые вещи Linux, вы заметите, что они даже не используют память.

2
17.02.2019, 04:05
2 ответа

IFS не использует несколько символов (или диапазон) в качестве разделителя; каждый символ в IFS обрабатывается как разделитель полей.

Из man bash :

IFS Внутренний разделитель полей, который используется для разделения слов после раскрытия и для разделения строк на слова с помощью встроенной команды чтения . Значение по умолчанию - <пробел> <новая строка> .

2
27.01.2020, 21:59

Как указывает @heemayl, проблема в том, что IFS не обрабатывает всю строку как разделитель, а обрабатывает каждый символ как отдельный разделитель. awk , однако, может использовать строку в качестве разделителя.

Например:

#!/bin/bash
while read -r key value
do 
   printf 'key %-7s val %s\n' "$key" "$value" 
done < <(awk -F ':#:' '{print $1" "$2}' $FileName )

key f       val 0
key c       val Test C
key s       val test S
key ctype   val 0
key a       val test A
key t       val 10:02:03
key r       val test r
key         val 
key f       val 0
key c       val Test C1
key s       val test S1
key ctype   val 1
key a       val test A1
key t       val 00:02:22
key r       val test r
key         val 
key f       val 20
key c       val Test C
key s       val test S
key ctype   val 2
key a       val test A1
key t       val 00:02:03
key r       val test r
2
27.01.2020, 21:59

Теги

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