LINUX.ORG.RU
ФорумTalks

[scripting][быстрый вопрос] awk parse int


0

1

дано:

[kos@iVAIO ~]$ echo FD=`lsof -p 7160 | grep Flash | awk '{print $4}' | sed 's/u//' | sed 's/w//'`
FD=26r
[kos@iVAIO ~]$ 

нужно, чтобы FD показывал только номер (убрать r, и оставить только 26).

как это сделать?

лень копаться в документации.. плиз, помогите осилить.


Ответ на: комментарий от Sonsee

>> grep [0-9][0-9]

[0-9]\{2\}

Ну и --only-matching забыл.

GotF ★★★★★ ()
Ответ на: комментарий от Sonsee

FD=`lsof -p $PID | grep Flash | awk '{print $4}' | grep -o '[0-9][0-9]'`

четвёртое поле строки с Flesh только 2 цифры что-ли? (почему именно 2?)

$ echo "xx  Flash  xxfc dd786ssd dff   f" | sed -r '/Flash/!d;s/(\S+\s+){3}(\S+).*/\2/;s/[^0-9]*([0-9]+).*/\1/' 
786
drBatty ★★ ()
Ответ на: комментарий от drBatty

только 2 цифры что-ли?

ну пока я туда лазил и наблюдал с разными видео, там не то, что две цифры, там 26 всё время :)

btw, спасибо за int parser, думаю пригодится.

Sonsee ()
Ответ на: комментарий от Sonsee

четвёртое поле - это как я понимаю тип файла. Для обычного, регулярного файла это файловый дескриптор. 0 - входной поток 1 - выходной поток 2 - поток ошибок 3... - разные файлы, которые открыла программа. Буковки значат режим доступа. Вот что пишет ман, на эту тему:

       FD         is the File Descriptor number of the file or:

                       cwd  current working directory;
                       Lnn  library references (AIX);
                       err  FD information error (see NAME column);
                       jld  jail directory (FreeBSD);
                       ltx  shared library text (code and data);
                       Mxx  hex memory-mapped type number xx.
                       m86  DOS Merge mapped file;
                       mem  memory-mapped file;
                       mmap memory-mapped device;
                       pd   parent directory;
                       rtd  root directory;
                       tr   kernel trace file (OpenBSD);
                       txt  program text (code and data);
                       v86  VP/ix mapped file;

                  FD is followed by one of these characters, describing the mode under which the file is open:

                       r for read access;
                       w for write access;
                       u for read and write access;
                       space if mode unknown and no lock
                            character follows;
                       `-' if mode unknown and lock
                            character follows.

                  The mode character is followed by one of these lock characters, describing the type of lock applied to the file:

                       N for a Solaris NFS lock of unknown type;
                       r for read lock on part of the file;
                       R for a read lock on the entire file;
                       w for a write lock on part of the file;
                       W for a write lock on the entire file;
                       u for a read and write lock of any length;
                       U for a lock of unknown type;
                       x for an SCO OpenServer Xenix lock on part      of the file;
                       X for an SCO OpenServer Xenix lock on the      entire file;
                       space if there is no lock.

                  See the LOCKS section for more information on the lock information character.

                  The FD column contents constitutes a single field for parsing in post-processing scripts.
drBatty ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.