Как печатать специфические колонны в определенной линии файла

У меня есть один fichero.txt со следующей информацией:

1;Pepito;Flores Rubias;3;IT;OCT;PT
2;Juan;Ramirez Rubias;3;IT;LM;PY
3;Joan;Trico Traco;4;IM;ENG;IR
4;Jose;Trigo Limpoio;5;UT;DOM;WE

Первая колонна - число пользователя, определенного переменной $numero.

Я нуждаюсь в том, чтобы смочь консультировать последние три линии пользователя, давая число пользователя, который выполняет программу.

А именно, я нуждаюсь в коде, который ищет число, которое ты даешь ему (что соответствует первой колонне и только первой колонне), он изолировал эту линию, и показал тебе последние три колонны этого пользователя. Не, если я объяснился.

Это у меня есть так, но просвет, оно я не функционирует:

cat fichero.txt | (awk -F ";" '{$1}' | grep "$numero") | awk -F ";" '{print $2, $3 ":\n  " $5 "\n 2ª  " $6 "\n 3ª  " $7 "\n" }'
5
задан 17.02.2017, 09:16
3 ответа

Я надеюсь понять хорошо, имей в виду, что я не использую awk. Этот файл ввода:

$ cat fichero.txt
1;Pepito;Flores Rubias;3;IT;OCT;PT
2;Juan;Ramirez Rubias;3;IT;LM;PY
3;Joan;Trico Traco;4;IM;ENG;IR
4;Jose;Trigo Limpoio;5;UT;DOM;WE

Сейчас какие-то примеры:

$ numero=3
$ cat fichero.txt | grep "^$numero;" | cut -d";" -f5-7
IM;ENG;IR
$ numero=1
$ cat fichero.txt | grep "^$numero;" | cut -d";" -f5-7 
IT;OCT;PT

Просто я ищу nГєmero пользователя, определенного с grep включая характер ;:

grep "^$numero;"

С помощью cut я делю ее lГ-nea используя как delimitador (с нею opciГіn -d) характер ; и поля (с нею opciГіn -f) от 5 до 7:

cut -d";" -f5-7

, Если ты хочешь заменить характер ;, например, местом vacГ - или, ты можешь добавлять команду tr из этой формы:

$ cat fichero.txt | grep "^$numero;" | cut -d";" -f5-7 | tr ";" " "
IT OCT PT

Или возможно с разрывом lГ-nea:

$ cat fichero.txt | grep "^$numero;" | cut -d";" -f5-7 | tr ";" "\n"
IT
OCT
PT
6
ответ дан 24.11.2019, 14:22

В awk serГ - в просто:

$ awk -F\; -v numero=1 '$1==numero{print $5,$6,$7}' fichero.txt

С разрывами lГ-nea:

$ awk -F\; -v user=1 '$1==numero{print $5,$6,$7}' OFS='\n' fichero.txt
IT
OCT
PT
2
ответ дан 24.11.2019, 14:22
numero=3

grep ^$numero file.txt| awk -F";" '{print $5,$6,$7}'
IM ENG IR

, Если то, в чем ты нуждаешься, состоит в том, чтобы они появились в формате колонна:

grep ^$numero file.txt| awk -F";" '{print $5,"\n"$6"\n"$7}'
IM 
ENG
IR
0
ответ дан 24.11.2019, 14:22