Простой, хотя awk -Меньше раствор в bash:
while IFS=, read -r a a a b; do echo "$a"; done <inputfile
Он работает быстрее для небольших файлов (< 100 линий), то awk как он использует меньше ресурсов (избегает вызова дорогой fork
и execve
системных вызовов).
EDIT от Ed Мортон (извините за привет-подъемное ответ, я не знаю, если есть лучший способ решения этой проблемы):
Чтобы отмести миф, что оболочка будет работать быстрее, чем AWK для маленькие файлы:
$ wc -l file
99 file
$ time while IFS=, read -r a a a b; do echo "$a"; done <file >/dev/null
real 0m0.016s
user 0m0.000s
sys 0m0.015s
$ time awk -F, '{print $3}' file >/dev/null
real 0m0.016s
user 0m0.000s
sys 0m0.015s
Я ожидаю, что если вы получаете достаточно НАСТОЯЩЕМУ небольшой файл, то вы увидите скрипт запуска в доли мгновение ока быстрее, чем сценарий AWK, но кого это волнует?
И если вы не верите, что это труднее писать мощные скрипты, чем AWK скрипты, обратите внимание на эту ошибку в сценарии оболочки вы публикуемую:
$ cat file
a,b,-e,d
$ cut -d, -f3 file
-e
$ awk -F, '{print $3}' file
-e
$ while IFS=, read -r a a a b; do echo "$a"; done <file
$
Почему вы хотели бы использовать 'awk'? ИМХО это очень простая проблема. У вас есть какой-нибудь вопрос, чтобы решить эту проблему? – TrueY