Вывод моей команды выглядит примерно так:
1540 "A B"
6 "C"
119 "D"
Первый столбец - это всегда число, за которым следует пробел, а затем строка в двойных кавычках.
Моя цель - получить только второй столбец, например:
"A B"
"C"
"D"
Я намеревался использовать <some_command> | awk '{print $2}'
для этого. Но вопрос в том, что некоторые значения во втором столбце содержат пробелы, которые являются разделителем по умолчанию для awk
разделения полей. Следовательно, вывод испорчен:
"A
"C"
"D"
Как правильно получить значение второго столбца (с парными кавычками)?
awk '{$1=""; print $0}'
, но он по-прежнему имеет ведущий пробел. Это может быть удаленоsed '/^ //'
. Но можно ли это сделатьawk
?Ответы:
Или используйте sed & regex.
источник
<some_command> | sed 's/.* \(".*"\)/\1/'
Используйте,
-F [field separator]
чтобы разбить строки на"
s:или для ввода из трубы
вывод:
источник
'{print "\""$2"\""}'
"\"" + $2 + "\""
. Окружающие кавычки указывают на то, что нужно добавить к выводу, и экранированная кавычка (\"
) печатается. Для того, чтобы помочь себе это, это то , что это будет выглядеть , если мы хотим , чтобы добавить пробелы вокруг$2
вместо кавычки:'{print " "$2" "}'
. Мы также можем добавить интервал между форматами, чтобы немного упростить работу:'{print " " $2 " "}'
Если вы могли бы использовать что-то кроме «awk», то попробуйте это вместо
-d - разделитель, -f - поле для обрезки, и с помощью -f2- мы намерены обрезать 2-е поле до конца.
источник
-d
? Это выглядит немного странно в этом смысле.Это должно работать, чтобы получить конкретный столбец из команды вывода «docker images»:
Это собирается напечатать третий столбец
источник
Вам не нужен awk для этого. Использование
read
в оболочке Bash должно быть достаточно, напримерили:
источник
Если у вас есть GNU awk, это решение, которое вы хотите:
источник
источник
Затем, предположим, вы называете скрипт как co, скажем, что-то вроде этого, чтобы получить размеры файлов (в примере предполагается, что вы используете Linux, но сам скрипт не зависит от ОС): -
ls -lh | co 5
источник