извлечь строку из файла с помощью сценария оболочки - PullRequest
0 голосов
/ 08 августа 2011

У меня есть файл с именем log.txt. Файл содержит, как показано ниже: -

/proc
used    avail
10      100

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

/proc
10
100

Ответы [ 4 ]

1 голос
/ 08 августа 2011
awk '/\/proc/ {print;getline;getline;print $1"\n"$2}' log.txt

Приведенная выше команда awk вызывает getline дважды, когда строка соответствует /proc. Затем оператор print выводит вторую строку после совпадения.

Выход:

/proc
10
100
1 голос
/ 08 августа 2011

Используя sed, и если у вас есть пробелы между 10 и 100:

sed -e '2d;3s/  */\n/' log.txt

, если у вас есть табуляции между 10 и 100, и вы дали GNU sed:

sed -e '2d;3s/\t\t*/\n/' log.txt

если у вас есть вкладки от 10 до 100, и вы не дали GNU sed, а реальные вкладки вместо 2 \ t выше.

1 голос
/ 08 августа 2011
awk '{print $1 $4 $5}' log.txt
0 голосов
/ 08 августа 2011

Как избежать sed (или awk) и использовать стандартные утилиты UNIX, и если это пробелы, у вас есть от 10 до 100:

paste -s -d " " file | tr -s " " | cut -d " " -f 1,4,5 | tr " " "\n"

, если у вас есть вкладки от 10 до 100, и у вас естьУтилиты GNU:

paste -s -d "\t" file | tr -s "\t" | cut -f 1,4,5 | tr "\t" "\n"

, если у вас есть вкладки между 10 и 100, и вы не предоставили утилиты GNU, а реальные вкладки вместо \ t выше и реальные вместо \ n.

...