Вопрос доступ к элементу поля через awk


У меня есть следующие столбцы:

_111_   [555]
_222_   [666]
_333_   [777]
_444_   [888]

Я хочу получить доступ к 111 из _111_, или 888 из [888],

Как получить доступ к элементам полей с помощью awk,


2
2017-07-21 10:57


происхождения




ответы:


попробуй это:

  awk '{gsub("_|\\[|\\]","",$0); print $1 "-" $2;}' prova.txt

AWK прочитайте каждую строку и используйте «» (пробел) в качестве разделителя полей, GSUB удалить символы: '_' '[' ']', поэтому $ 1 и $ 2 будут содержать токен без необоснованного символа.

Этот скрипт выведет:

  111-555 
  222-666 
  333-777 
  444-888

Если вы _111_ а также [8888] как первый токен и последний токен, попробуйте следующее:

  awk '{gsub("_|\\[|\\]","",$0);if (NR == 1) print $1;}END{print $2}' prova.txt

В этом случае вывод будет:

 111
 888

Здесь Руководство пользователя awk где вы можете найти более подробную информацию.


1
2017-07-21 11:55





Если у вас есть эти данные в файле file.txt

Доступ 111 как,

cat file.txt | tr -d "[]_" | awk 'NR==1 {print $1}'

Доступ 888 как,

cat file.txt | tr -d "[]_" | awk 'NR==4 {print $2}'

около доступ к элементам полей с помощью awk,


1
2017-07-21 11:55