
Я анализирую файл и использую 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