Значения, разделенные табуляцией в awk

Как мне выбрать первый столбец из строки, разделенной табуляцией?

# echo "LOAD_SETTLED    LOAD_INIT       2011-01-13 03:50:01" | awk -F'\t' '{print $1}'

Вышеупомянутое вернет всю строку строка, а не просто «LOAD_SETTLED», как ожидалось.

Обновление:

Мне нужно изменить третий столбец в значениях, разделенных табуляцией. и разрешено записывать в них данные в Linux.

/proc/$PID/fd/

Итак, я создал простой скрипт, перечисленный ниже, для проверки записи данных в STDIN TTY ) скрипта из внешнего процесса.

#!/usr/bin/env python

import os, sys

def get_ttyname():
    for f in sys.stdin, sys.stdout, sys.stderr:
        if f.isatty():
            return os.ttyname(f.fileno())
    return None

if __name__ == "__main__":
    print("Try commands below")

    print("$ echo 'foobar' > {0}".format(get_ttyname()))
    print("$ echo 'foobar' > /proc/{0}/fd/0".format(os.getpid()))

    print("read :: [" + sys.stdin.readline() + "]")

Этот тестовый сценарий показывает пути к STDIN и TTY , а затем подождите, пока один из них напишет его STDIN .

Я запустил этот сценарий и получил сообщения ниже.

Try commands below
$ echo 'foobar' > /dev/pts/6
$ echo 'foobar' > /proc/3308/fd/0

Итак, я выполнил команду echo 'foobar'> / dev / pts / 6 и echo 'foobar'> / proc / 3308 / fd / 0 с другого терминала. После выполнения обеих команд сообщение foobar дважды отображается на терминале, на котором выполняется тестовый скрипт, но это все. Строка print ("read :: [" + sys.stdin.readline () + "]" ) не был выполнен.

Есть ли какие-либо способы записать данные из внешних процессов в STDIN существующего процесса (или другие файловые дескрипторы), то есть вызвать выполнение строки print ( "read :: [" + sys.stdin.readline () + "]") из других процессов?

24
задан Community 23 May 2017 в 12:10
поделиться