Estou tentando popular um array em Bash com WSL2. Tenho um arquivo de texto de entrada que estou tentando analisar usando awk
. Quero extrair as informações abaixo de YOLOargs em um array separado por espaços, exceto o caminho do arquivo entre aspas, que quero extrair por inteiro.
Aqui está o arquivo de texto de exemplo ( argstext
):
Pipelines:
YOLO-Goby
Pipeline Container Arguments:
Bubblerargs:
python Collect_Unpack.py --primary_images --processes 1 --every_nth 25 --output_folder
YOLOargs:
python 03_YOLO_infer_no_labels.py --img_list_txt --output_name inference_output_test --confidence 0.1 --weights "/mnt/c/Users/jmilitello/OneDrive - DOI/ARIS_MLM_Files/Literature/Literature for Pete/Code/best.pt"
Até agora usei apenas o seguinte para extrair as informações abaixo YOLOargs
:
YOLOcontainerargs=($(awk -F' ' 'c&&c--;/.*YOLOargs:/{c=1}' "${argstext}"))
Isso criará uma matriz, mas os elementos do caminho do arquivo serão separados por todos os espaços em vez de serem um único elemento.
xargs
respeita as aspas duplas como um delimitador de campo. Podemos ver isso ao alimentarawk
o script do OP paraxargs
:Agora podemos capturar essas linhas em uma matriz via
mapfile
:Se você estiver tentando preencher um array bash, então isso pode ser o que você quer, usando o GNU awk para
FPAT
:Veja também as respostas para uma pergunta muito semelhante publicada hoje - Converter uma matriz armazenada em uma variável de string de volta para uma matriz .