Как правило, фильтрацию строк лучше всего выполнять с помощью регулярных выражений. Однако для вашего конкретного примера вы можете перевести каждый cut
в один из двух простых эквивалентов awk
следующим образом. Любой из них:
awk '{FS=":";$0=$0; FS=" ";$0=$6; FS="#";$0=$3; print $1}' $file
awk '{split($0,a,":"); split(a[6],b,/ +/); split(b[3],c,"#"); print c[1]}' $file
Первый метод преобразует "cut -dx -fy" в "FS = x; для ввода $ 0 вводим, в результате получаем $ y". FS - это разделитель полей.
2-е преобразовывает его в «split (input, output, x), результат - output [y]».
Я не уверен, как cut обрабатывает пробелы как разделитель, поэтому я использовал регулярное выражение / +/
которое соответствует множеству пробелов как одному. Используйте " "
если разделить на один пробел.