У меня большой файл, в котором есть такие блоки:
....
Org Id VIN Plate Registration Error Code
------ -------------------- -------------------- ------------------------------------------
124 aaaaaaaaaaaaaaaaa WI-V-456 Info 1
124 bbbbbbbbbbbbbbbbb DH-BE-1111 Info 2
124 ccccccccccccccccc A-RM-1332 Info 3
124 ddddddddddddddddd S-SH-3333 Info 4
124 eeeeeeeeeeeeeeeee RH-L-360 Info 5
---------------------------------------------------------------------------------------------
....
Я просто хочу извлечь столбец Error Code
каждого из них, как я могу это сделать?
cat ${fichier} | while read line
do
if [ "x${line}" = 'xOrg Id VIN Plate Registration Error Code' ]
then
echo ${line}
##
fi
done
2 ответа
Например, вы можете использовать awk
:
$ awk '$NF>0{print $(NF-1), $NF}' file
Error Code
Info 1
Info 2
Info 3
Info 4
Info 5
Это напечатает предпоследнее и последнее поля, если последнее представляет собой текст или числа.
У вас есть несколько вариантов. @fedorqui показал, что один из них использует awk, вы также можете использовать смешивание cut
с grep
:
$ cut -c 50- testfile.txt | grep ^[^-]
Error Code
Info 1
Info 2
Info 3
Info 4
Info 5
Что означает: вырезать тестовый файл txt - показать символы от 50 до конца строки ({{X 0}}), а затем отправить его в grep
, чтобы отобразить только строки, которые не начинаются с символа "-".
Похожие вопросы
Новые вопросы
shell
Термин «оболочка» относится к общему классу интерпретаторов текстовых интерактивных команд, чаще всего связанных с операционными системами Unix и Linux. Для вопросов о сценариях оболочки используйте более конкретные теги, такие как «bash», «powershell» или «ksh». Без специального тега следует предполагать переносимое (совместимое с POSIX) решение, хотя использование «posix» в дополнение или «sh» вместо этого предпочтительнее.
Info XXX
?Error Code
отличается (например, это всегда будет «Информация 1» и/или «Предупреждение 4» и/или «Ошибка 255»), вы также можете использоватьsed
чтобы выделить:sed -r 's/(<APPROPRIATE REGEX HERE>)$/\1/g'