напишите несколько строк, используя awk

Попробуйте ctrl-alt-shift (left/right)arrow

http://www.unixmen.com/quick-tip-enable-workspaces-ubuntu-14-04-lts-desktop/

1
задан 18 December 2016 в 20:55

2 ответа

Столбец 4 становится разделенным, когда вы используете {print $ 4}, потому что awk интерпретирует и пробел (например, между «hello» и «there») в качестве разделителя, и в этом примере «там» будет в поле 5.

В зависимости от того, как форматируется ваш файл, существует ряд возможных ответов (несколько проще других).

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

awk -F \t '{print $4}' (здесь -F устанавливает разделитель на одну вкладку)

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

awk -F '[\t]+' '{print $4}' (здесь -F устанавливает разделитель полей на одну или несколько вкладок)

Если в первых столбцах всегда фиксированное число символов (например, 20), используйте

awk '{print substr($0, 21)}'

(команда substr просто печатает входную известь с 21-го символа до конца)

или, если ни один из вышеперечисленных

awk '{for (i=4; i<=NF; i++) printf "%s ", $i print ""}'

(этот цикл печатает все поля от четвертого до конца строки)

0
ответ дан 23 May 2018 в 03:14

Если формат вашего входного файла состоит в том, что каждый столбец разделен двумя или более пробелами, а допустимая запись в столбце 4 никогда не будет содержать более одного места в строке, вы можете использовать следующее решение, в котором поле разделитель установлен в два или более пробела.

awk -F " [ ]+" '{print $4}'

Пример вывода:

hello hello there

(Обратите внимание, что заголовок «Column4» был отклонен, потому что между каждым заголовком есть только одно пространство)

0
ответ дан 23 May 2018 в 03:14

Другие вопросы по тегам:

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