$ cat file 123,A,B,,,,AC,DF,,,,,,,,,,,,n 567,A,B,,C,D,,,,,,,,, 7 89,C,B
$ awk -F, 'BEGIN { OFS = FS } { for (i = 2; i <= NF; ++i) if ($i != "") print $1, $i }' file 123,A 123,B 123,AC 123,DF 123,n 567,A 567,B 567,C 567,D 567, 7 89,C 89,B
Это предполагает, что данные представлены в простом формате CSV, который не требует никаких кавычек (никаких встроенных запятых или новых строк в любом поле ). Код
awk
просто перебирает разделенные запятыми -поля каждой строки, начиная с поля 2, и печатает их вместе с первым полем на новых строках. Пустые поля игнорируются. Если вы не хотите игнорировать пустые поля (неясно в вопросе ), удалите битif ($i != "")
в коде.-121 ---206540 -
Вы должны использовать man 1 bash:
Маленький пример:
#!/bin/bash while getopts "a:b:" opt # get options for -a and -b ( ':' - option has an argument ) do case $opt in a) echo "Option a: $opt, argument: $OPTARG";; b) echo "Option b: $opt, argument: $OPTARG";; esac done