Использование sed:
sed -E 's/^([^,]*,)*([^,]*)(,[^,]*){1}$/\2/' infile
Выход:
d
i
n
([^,]*,)*
соответствует любому количеству символов запятой, отличных от -, за которыми следует запятая, т. е. любому количеству столбцов. ([^,]*)
соответствует столбцу. (,[^,]*){1}
соответствует одному столбцу в конце, если вы измените квантификатор {1}
на {2}
, он будет соответствовать третьему столбцу с конца и т. д. Если у вас есть пустая строка, использование IFS
не сработает, потому что несколько \n
сжаты.
Однако вы можете использоватьreadarray
:
readarray -t arr < <(python init.py)
echo "A='${arr[0]}', B='${arr[1]}', C='${arr[2]}', D='${arr[3]}'"
Добавьте -d ''
для разделения на\0
:
readarray -d '' -t arr < <(python init.py)
Изman bash
:
-d The first character of delim is used to terminate each input line, rather than newline. If delim is the empty string, mapfile will terminate a line when it reads a NUL character.