получить данные столбца из txt файла без имени столбца - PullRequest
2 голосов
/ 11 июля 2020

Это student.txt файл:

RollNo|Name|Marks
123|Raghu|80
342|Maya|45
561|Gita|56
480|Mohan|71

Я хочу получить данные из столбца «Метки», и я использовал команду awk

awk -F "|" '{print $3}' student.txt

, и она дает результат вроде

Marks
80
45
56
71

Этот вывод включает имя столбца, которое: Marks ", но я хочу только получить данные и показать результат, например,

80
45
56
71

Ответы [ 5 ]

3 голосов
/ 11 июля 2020

Не могли бы вы попробовать следующее, это НЕ имеет жестко закодированного номера поля для ключевого слова Marks, в заголовках он будет искать эту строку и печатать только те столбцы, которые находятся под метками, поэтому даже ваш столбец с метками находится в любом поле номер, это должно работать нормально. Написано и протестировано по ссылке https://ideone.com/Ufq5E2.

awk '
BEGIN{ FS="|" }
FNR==1{
  for(i=1;i<=NF;i++){
    if($i=="Marks"){ field=i }
  }
  next
}
{
  print $field
}
'  Input_file
3 голосов
/ 11 июля 2020

Добавьте условие в ваш awk скрипт для печати третьего поля, если номер входной записи больше 1:

awk -F'|' 'FNR>1{print $3}' student.txt
0 голосов
/ 12 июля 2020

альтернатива без awk

$ sed 1d file | cut -d\| -f3

80
45
56
71
0 голосов
/ 11 июля 2020

Другой пример:

awk -F'|' 'NR != 1 {print $3}' input_file
0 голосов
/ 11 июля 2020

для извлечения данных из столбца «Метки» - -использовать [ing] awk :

$ awk -F\| '
FNR==1 {
    for(i=1;i<=NF;i++)
        if($i=="Marks")
            next
    exit
}
{
    print $i
}' file
80
45
56
71
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...