как получить требуемое поле из файла на Linux? - PullRequest
0 голосов
/ 24 марта 2011

У меня есть один файл, который содержит три поля, разделенные двумя пробелами. Мне нужно получить только третье поле из файла. Содержимое файла такое же, как в следующем примере:

kuldeep  Mirat  Shakti
balaji  salunke  pune
.
.
.

Как мне получить третье поле?

Ответы [ 5 ]

5 голосов
/ 24 марта 2011

Чтобы получить 3-е поле, при условии, что у вас нет «встроенных пробелов», просто

awk '{print $3}' file

awk по умолчанию устанавливает пробелы в качестве разделителей полей. Таким образом, даже если у вас есть 2 пробела или больше, 3-е поле всегда $ 3.

Однако, если вы хотите быть конкретным, укажите разделитель поля

awk -F"  " '{print $3}' file

Если у вас есть другие варианты, Рубин

ruby -F"  " -ane 'print $F[2]' file
ruby -ane 'print $F[2]' file

Обновление: если вам нужно получить все поля после 3-го,

awk -F"  " '{$1=$2=$3=""}1' OFS="  " file # add a pipe to  `sed 's/^[ \t]*//'` if desired

ruby -F"  " -ane  'puts $F[3..-1].join("  ")' file
2 голосов
/ 24 марта 2011

Использовать awk:

awk -F'  ' '{print $3}' file

Это также работает, если поля могут содержать встроенные пробелы.

0 голосов
/ 24 марта 2011

Учитывая комментарий @ balaji к ответу @ kurani:

perl -pe 's/^.*?  .*?  //' filename
awk -F'  ' '{for(i=3; i<NF; i++) {printf("%s%s",$i,FS)}; print $NF}' filename
0 голосов
/ 24 марта 2011

Чтобы получить третье поле каждой строки, пройдите через awk, например,

cat filename | awk '{print $3}'

Если вы просто хотите получить третье поле первой строки, используйте head тоже:

cat filename | head -n 1 | awk '{print $3}'
0 голосов
/ 24 марта 2011

меньше имени файла | cut -d "" -f 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...