Обрезать значение, полученное из поля awk

Обрезать значение, полученное из поля awk

Я анализирую файл и использую awk для получения первого и третьего поля.

Это все хорошо, но в первом поле я хотел бы обрезать последние 4 символа из этой строки; пока я не нашел способа сделать это в awk, и единственный способ сделать это — сделать несколько вызовов, поэтому я сохраняю вывод awk в двух переменных, а затем обрезаю первую строку.

Есть ли более эффективный способ сделать это? Вот как выглядит файл

abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Это то, что я запускаю в цикле

echo $output | awk -F, "{print $1, $3}"

Это напечатает строку правильно, но затем я хочу обрезать $1, удалив последние 4 символа.

решение1

Один из методов — использовать substrфункцию awk. Например, начав с этого ввода:

$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Мы можем напечатать столбцы один и три, опустив последние четыре символа столбца один, с помощью:

$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod

Связанный контент