AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-956869

Brian's questions

Martin Hope
Brian
Asked: 2023-07-01 02:45:01 +0800 CST

PowerShell: relatando comprimento de arquivo incorreto

  • 6

O script a seguir examina os arquivos em dois locais que devem ser duplicados um do outro. Escrevi uma parte do script para examinar se os tamanhos de arquivo (.length) correspondem. No entanto, enquanto um arquivo informa o tamanho correto, o outro não. Você pode ilustrar por que isso acontece e como posso medir corretamente o tamanho do arquivo.


Roteiro

get-childitem -file -recurse | ForEach-Object {
    $comparisonFile=($_.FullName -replace 'Q:\\Backup Comparison\\E','V:\Q Dup Check Needed\E')
    $comparisonFileSize=$comparisonFile.Length
    Write-Host $_.FullName
    Write-Host $comparisonFile
    test-path $comparisonFile
    Write-Host $_.Length
    Write-Host $comparisonFileSize
    Write-Host ""
    sleep .1
}

Saída

Q:\Backup Comparison\E\EXCLUDE - FOUND\F(OUND) 01\found.000\dir0000.chk\._Vine_Street_ReportFinancialDetail_11_Q4.pdf
V:\Q Dup Check Needed\E\EXCLUDE - FOUND\F(OUND) 01\found.000\dir0000.chk\._Vine_Street_ReportFinancialDetail_11_Q4.pdf
True
4096
118

Tamanho do arquivo relatado pelo Windows

insira a descrição da imagem aqui insira a descrição da imagem aqui

powershell
  • 1 respostas
  • 16 Views
Martin Hope
Brian
Asked: 2023-04-29 23:31:26 +0800 CST

Windows 10 1709 não atualiza / erros DISM

  • 7

Estou tentando instalar uma versão mais atual do Windows 10, mas tudo o que tentei falhou. Não sei se há problemas com sfc /scannowe DISMestão relacionados, mas o último também é problemático. Eu corri chkdsk /f /rantes de tentar sfce DISM.

O que eu tentei


  1. Do Windows Update, versão 1803
  2. Do Windows Update, versão 1903
  3. Do Windows Update, versão 21H2
  4. De um USB criado pelo Windows Media Creator, versão 22H2

Tentativas de reparo de imagem do Windows

  1. SFC /scannowretorna o erro:

    A Proteção de Recursos do Windows encontrou arquivos corrompidos, mas não conseguiu corrigir alguns deles. Os detalhes estão incluídos no CBS.Log windir\Logs\CBS\CBS.log. Por exemplo C:\Windows\Logs\CBS\CBS.log. Observe que o log atualmente não é suportado em cenários de manutenção offline.

  2. DISM /online /cleanup-image /restorehealthretorna o erro:

    Erro: 0x800f081f

    Os arquivos de origem não foram encontrados. Use a opção "Fonte" para especificar a localização dos arquivos necessários para restaurar o recurso. Para obter mais informações sobre como especificar um local de origem, consulte http://go.microsoft.com/fwlink/?LinkId=243077 .

    O arquivo de log do DISM pode ser encontrado em C:\Windows\Logs\DISM\dism.log

  3. DISM /online /cleanup-image /restorehealth /source:D:\install.wim(de 22H2 iso) retorna o erro:

    Erro: 0x800f081f

    Os arquivos de origem não foram encontrados. Use a opção "Fonte" para especificar a localização dos arquivos necessários para restaurar o recurso. Para obter mais informações sobre como especificar um local de origem, consulte http://go.microsoft.com/fwlink/?LinkId=243077 .

    O arquivo de log do DISM pode ser encontrado em C:\Windows\Logs\DISM\dism.log

  4. Dism.exe /Online /Cleanup-Image /AnalyzeComponentStoreretorna

    Informações da loja de componentes (WinSxS):

    Tamanho relatado do armazenamento de componentes do Windows Explorer: 9,42 GB

    Tamanho real do armazenamento de componentes: 9,09 GB

    Shared with Windows : 6.42 GB
    Backups and Disabled Features : 2.41 GB
    Cache and Temporary Data : 252.40 MB
    

    Data da última limpeza: 2023-04-29 09:57:40

    Número de embalagens recuperáveis: 0 Limpeza de armazenamento de componentes recomendada: Não

    A operação foi completa com sucesso.


Informações adicionais

Eu tentei remediar meus problemas usando o seguinte guia ( guia ):

net stop bits
net stop wuauserv
net stop appidsvc
net stop cryptsvc
Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\*.*"
rmdir %systemroot%\SoftwareDistribution /S /Q
rmdir %systemroot%\system32\catroot2 /S /Q
regsvr32.exe /s atl.dll
regsvr32.exe /s urlmon.dll
regsvr32.exe /s mshtml.dll
netsh winsock reset
netsh winsock reset proxy
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc

Ao fazer isso, descobri que appidsvcnão está rodando e não vai rodar por causa de uma assinatura digital ruim. Não tenho certeza se isso contribui para o problema ou não


Além disso, no log do CBS, descobri o seguinte aparecer várias vezes (que parecem ser sfc /scannowsessões diferentes):

00005f53 [SR] Repairing 4 components
00005f54 [SR] Beginning Verify and Repair transaction
00005f57 [SR] Cannot verify component files for Microsoft-Hyper-V-Drivers-Hypervisor, version 10.0.16299.1087, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35}, manifest is damaged (true)
00005f5a [SR] Cannot verify component files for Microsoft-Hyper-V-3dVideo, version 10.0.16299.726, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35}, manifest is damaged (true)
00005f5d [SR] Cannot verify component files for Microsoft-OneCore-IsolatedUserMode-Common, version 10.0.16299.1059, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35}, manifest is damaged (true)
00005f60 [SR] Cannot verify component files for Microsoft-OneCore-IsolatedUserMode-Kernel, version 10.0.16299.699, arch amd64, nonSxS, pkt {l:8 b:31bf3856ad364e35}, manifest is damaged (true)
00005f61 [SR] Repair complete
00005f76 [SR] Committing transaction
00005f7b [SR] Verify and Repair Transaction completed. All files and registry keys listed in this transaction  have been successfully repaired

Ao ver isso, pensei em tentar remover o Hyper-V para ver que diferença faria. Recebi o seguinte erro ao tentar fazer isso:The component store has been corrupted. Error 0x80073712


Informações adicionais

Depois de tentar reparar com uma "atualização" local da mesma versão, recebi o seguinte erro. No momento, estou tentando solucionar problemas com guias que estou encontrando online. Vou relatar qualquer nova informação que vier.

0x80070004 – 0x3000D
The installation failed in the FIRST_BOOT phase with an error during 
MIGRATE_DATE operation.

Atualizar

Achei um setuperr.logem C:\$WINDOWS.~BT\Sources\Rollback. Eis o seu conteúdo:

Error SP CSetupPlatformOSSwitchCheckpoint::Rollback: Deleting of "C:\Windows.old" directory failed.[gle=0x00000091]
Error IBSLIB OSRollbackService::CBootFilesRestoreCheckpoint::Rollback: Failed to create WinPE rollback directory: C:\$WINDOWS.~BT\Sources\Rollback\WinPE[gle=0x000000b7]

O arquivo setupact.logtem muitas entradas semelhantes às seguintes:

 Warning SP SPMoveFileWithShortName: Failed to move \\?\c:\Windows\INF\3ware.PNF to \\?\c:\Windows.old\Windows\INF\3ware.PNF, error: 0x00000002

Informações que eu não sabia que eram importantes na época

Eu havia mudado o Expandable String Value ProfilesDirectoryin Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListpara um local diferente do padrão.

windows-10
  • 1 respostas
  • 53 Views
Martin Hope
Brian
Asked: 2023-04-20 02:54:12 +0800 CST

Não é possível encontrar a solução Regex correta

  • 6

Eu tenho um conteúdo que se parece com isso:

001 B OR 06K24b 01 TCP SC C 02
001 B CC 12K48b 99 BCP SC A 02 1982-11-09
001 B OR 06K24b 01 TCP SC C 02

Eu quero que minha expressão regex corresponda à linha 2, mas não à linha 1 ou 3.

Acho que preciso de um olhar positivo para trás, mas não tenho certeza. Mesmo se eu estiver correto, não consigo descobrir como aplicá-lo corretamente.

Eu tentei o seguinte:

^(?<=([0-9]{3} [A-Z] [A-Z]{2} ..K..b [0-9]{2} [A-Z]{3} [A-Z]{2} [A-Z] [0-9]{2})).*

e Lookahead Positivo:

^(?!([0-9]{3} [A-Z] [A-Z]{2} ..K..b [0-9]{2} [A-Z]{3} [A-Z]{2} [A-Z] [0-9]{2}))$

Por favor, me guie para a solução correta. Obrigado!

regex
  • 2 respostas
  • 21 Views
Martin Hope
Brian
Asked: 2023-03-27 02:21:27 +0800 CST

Powershell: "Return" não está saindo de uma função

  • 5

Eu tenho uma função que parece não sair quando encontra a palavra-chave return. Em vez disso, continua com a função. Aqui está o trecho relevante da função:

function Do-Something($photoNum,$photoLabelArrUniq) {
...
    $fileLabelArrUniq=(Get-ChildItem -filter "$photoNum *.tif").name.substring(4,14) | sort-object | get-unique

    $photoSideArr=@()
    $photoSideArr=($fileLabelArrUniq.substring(0,1))

    write-host "photoSideArr: $photoSideArr"

    $a=3
    $photoSideArr | Foreach-Object {
        if ($_ -eq "B") {
            write-host "return: $fileLabelArrUniq"
            write-host "Hello There"
            $a=4
            return $fileLabelArrUniq
        }
    }
write-host "a: $a"
...
return $something
}

e os resultados são:

photoSideArr: B F F
return: B OR 06K24b 07 F CC 06K24b 07 F OR 06K24b 07 #This is an array with 3 members: "B OR 06K24b 07","F CC 06K24b 07","F OR 06K24b 07"
Hello There
a: 4

O return: B OR 06K24b 07 F CC 06K24b 07 F OR 06K24b 07e Hello Thereindica que está no ifbloco de condição e, portanto, deve retornar $fileLabelArrUniqe, em seguida, sair da função. No entanto, conforme evidenciado pelo resultado a: 4(que só pode ocorrer se no ifbloco que incluir a returnpalavra-chave), a função continua depois que deveria retornar um resultado para o script principal e sair.

Meu entendimento de como returnfunciona em scripts está errado ou estou perdendo algo com a sintaxe? Eu estou perdido.

powershell
  • 1 respostas
  • 22 Views
Martin Hope
Brian
Asked: 2021-01-27 13:44:35 +0800 CST

PowerShell: Script vomitando em paralelo

  • 5

Quando executado em -Parallel, o script a seguir não passa a $basePathvariável declarada antes do início do bloco paralelo. Em vez disso, é um valor nulo. Isso não é um problema quando o script não é executado -Parallel-- ele passará o valor da variável e será executado conforme o esperado. FYI, estou executando o PS 7.x.

$basePath=((get-location) -replace "\\", "\\")
get-childitem *.tif -recurse | foreach-object -Parallel {
    $a=($_ -split "\.tif")[0]
    $path=(((split-path $_) -replace "$basePath", "O:\OD\FM\OneDrive\FM\Family Photos") -replace "TIF", "JPG")
    $b=(($a -replace "$basePath", "O:\OD\FM\OneDrive\FM\Family Photos") -replace "TIF", "JPG")
    if (!(Test-Path -path $path)) {mkdir "$path"}
    if (!([system.io.file]::Exists("$b.jpg"))) {
        magick convert "$a.tif" -resize 50% -quality 100 -define jpeg:extent=1024KB "$b.jpg"
        [console]::foregroundcolor="Green"
        echo "`nB`:`t$b`n`n"
    }
} -ThrottleLimit 8
    [console]::foregroundcolor="White"
powershell parallel-processing
  • 1 respostas
  • 179 Views
Martin Hope
Brian
Asked: 2021-01-12 22:39:33 +0800 CST

Contagem com base em um subconjunto exclusivo de campos

  • 7

Eu tenho um arquivo de texto que está estruturado da seguinte forma:

P,ABC,DEF
P,GHI,JKL
B,ABC,DEF
B,MNO,PQR

Eu quero obter uma contagem de quantas vezes uma linha aparece onde os campos 2 e 3 são os mesmos, preservando o campo 1. Então, a saída seria algo assim:

2,P,ABC,DEF
1,P,GHI,JKL
2,B,ABC,DEF
1,B,MNO,PQR

uniq -cnão funcionará (até onde eu sei) porque não pode separar por campo. sort -u -t, -k2,2 -k3,3também não funcionará, pois não pode contar (até onde eu sei) e o comando conforme escrito simplesmente destruirá a terceira linha como uma duplicata, deixando a primeira.

No final das contas, o que preciso retornar são as linhas 2 e 4, pois os campos 2 e 3 combinados são únicos. Mas, preciso preservar o campo 1, pois se refere a qual conjunto de dados (no mundo real) os campos 2 e 3 se originam. Então, uma solução que retorne as linhas 2 e 4 é realmente o que eu preciso.

Assim, uma solução da seguinte forma também funciona:

P,GHI,JKL
B,MNO,PQR
unix sorting
  • 1 respostas
  • 26 Views
Martin Hope
Brian
Asked: 2021-01-03 08:37:49 +0800 CST

PowerShell: Paralelo: Out-File: O processo não pode acessar o arquivo

  • 6

Eu tenho o seguinte script que executo no PS 7.2.0-preview.1:

get-childitem *.* -File -recurse | foreach-object -parallel {$hashX=(get-filehash -algorithm sha256 $_); $hash=@{sha256=$hashX.Hash; path=$hashX.Path}; write-output "$($hash.path)`t$($hash.sha256)" >> d:\g-SATA-hash.txt} -throttle 8

No entanto, ao executar o script, geralmente recebo o erro,

Out-File: The process cannot access the file

Obviamente, isso ocorre porque dois ou mais processos paralelos estão tentando escrever o mesmo arquivo de saída ao mesmo tempo (ele roda bem sem -Parallel).

Minha pergunta é: existe uma maneira de dizer ao processo para continuar tentando gravar no arquivo de saída até que seja bem-sucedido, em vez de postar uma mensagem de erro e seguir em frente. Imagino que haja algo em uma solução try-catch, mas não estou familiarizado com try-catch e postagem de erros no PowerShell.

Desde já agradeço sua orientação.

powershell shell-script
  • 1 respostas
  • 1270 Views
Martin Hope
Brian
Asked: 2020-11-30 21:14:10 +0800 CST

PowerShell: matriz de matrizes

  • 5

Tenho arquivos com a seguinte estrutura:

c:\root\dir1\001 (BRP-01 Some) Text.tif
c:\root\dir2\002 (BRP-01 Some Different) Text.tif
c:\root\dir3\001 (BRP-01 Some) Text.tif
...

Por fim, quero extrair arquivos com base em um intervalo contíguo dos três primeiros dígitos de um nome de arquivo. Minha abordagem inicial é tentar Array of Arraysarmazenar informações de diretório e informações de arquivos ... que serão posteriormente executadas para extrair e avaliar os três primeiros números e manipulá-los posteriormente. No entanto, minha experiência com arrays em PS é limitada e estou tendo problemas na hora de armazenar dados, acessar esses dados ou ambos.

Se você pudesse ajudar a corrigir minha sintaxe, seria apreciado. Além disso, se houver uma abordagem melhor que eu possa considerar, estou aberto a abordagens alternativas.

PS C:\root\> Get-ChildItem *.tif -recurse | foreach-object {$a=$_.DirectoryName; $b=$_.Name; $c+=@(@($a,$b)); foreach ($i in $c) {echo $i[0]}
# I realize something "breaks" after $c+= ... but I am unsure what. The script runs but I cannot access the respective fields as expected or the data isn't being populated as expected.

Eu esperaria que a matriz retornasse algo como o seguinte assim que eu tiver a sintaxe correta:

$i[0]: 
       c:\root\dir1\
       c:\root\dir2\
       c:\root\dir3\
$i[1]: 
       001 (BRP-01 Some) Text.tif
       002 (BRP-01 Some Different) Text.tif
       001 (BRP-01 Some) Text.tif
$i[0][1]: c:\root\dir1\

Estou bastante confiante de que posso manipular os dados, uma vez que posso entender firmemente como a Array of Arraysconstrução e os dados são chamados a partir dele.

Obrigado!

powershell shell-script
  • 1 respostas
  • 175 Views
Martin Hope
Brian
Asked: 2020-10-02 20:27:49 +0800 CST

Bash: Problemas matemáticos de data/hora

  • 7

O script a seguir usa duas entradas sourceFile="${1}"e arquivos trimFile="${2}". O $sourceFileé um arquivo de vídeo que deve ser cortado em vários novos arquivos com base nos dados do arquivo $trimFile. O $trimFileé um arquivo de texto com a seguinte estrutura (arquivo real relacionado a este problema):

00:49:30,00:53:00 DescriptionA
03:33:30,03:38:40 DescriptionB
04:54:32,04:55:37 DescriptionC

O $trimFileusa vírgulas e espaços como delimitadores no script abaixo. Embora bastante óbvio, cada linha representa um clipe a ser criado a partir do arquivo $sourceFile. Além disso, o primeiro campo é a hora inicial do clipe a ser cortado, o segundo campo é a hora final do clipe a ser cortado e o último campo é uma descrição do clipe.

Meu problema não é com o corte do arquivo $sourceFile. Estou tentando renomear os novos clipes com data e hora em relação à data dos arquivos de vídeo originais. Cada um $sourceFilee $trimFileé nomeado como o exemplo a seguir (que são os nomes de arquivo reais que estou usando atualmente): 2017-05-15_14-17-22 (2017-05-16 00-45-41.151674100 -0400) (HEVC27).mp4e 2017-05-15_14-17-22 (2017-05-16 00-45-41.151674100 -0400) (HEVC27).txt, respectivamente. Novamente, embora bastante óbvio, os componentes da data são Year: 2017, Month: 05, Day: 16, Hour: 14, Minute: 17e Second:22(ignore a data entre parênteses, pois é uma referência antiga com a data ajustada errada do UTC).

Deve ficar evidente no script abaixo como a data/hora no arquivo é extraída, bem como a data/hora dentro do arquivo é $trimFileextraída. Para ilustrar o problema, preciso mostrá-lo com e sem algumas linhas comentadas. Aqui está com algumas linhas comentadas (fará sentido quando eu discutir isso a seguir).

01: sourceFile="${1}"
02: trimFile="${2}"
03: 
04: IFS=$'\n'
05: 
06: dos2unix "$trimFile"
07: numberOfSegments=`cat "$trimFile" | wc -l`
08: numberOfSegments=$((numberOfSegments + 1))
09: extension=`echo "$sourceFile" | awk -F'.' '{print $NF}'`
10: 
11: base=`echo "$sourceFile" | sed -e "s|.$extension||g"`
12: 
13: #~/bin/ffmpeg -i "${sourceFile}" -c:v copy "/dev/shm/$base.${extension}"
14: #sourceFile="/dev/shm/$base.${extension}"
15: 
16: # File date/time information
17: origYear="${sourceFile:0:4}"
18: origMonth="${sourceFile:5:2}"
19: origDay="${sourceFile:8:2}"
20: origHour="${sourceFile:11:2}"
21: origMinute="${sourceFile:14:2}"
22: origSecond="${sourceFile:17:2}"
23: 
24: origDate="${origYear}-${origMonth}-${origDay} ${origHour}:${origMinute}:${origSecond}"
25: 
26: for (( i=1;i<="$numberOfSegments";i++ ))
27:     do
28: 
29:         lineEntry=`cat "$trimFile" | head -"$i" | tail -1`
30: 
31:         startHour=`echo "$lineEntry" | awk -F'[:,]' '{print $1}'`
32:         startMinute=`echo "$lineEntry" | awk -F'[:,]' '{print $2}'`
33:         startSecond=`echo "$lineEntry" | awk -F'[:,]' '{print $3}'`
34: 
35:         endHour=`echo "$lineEntry" | awk -F'[:,]' '{print $4}'`
36:         endMinute=`echo "$lineEntry" | awk -F'[:,]' '{print $5}'`
37:         endSecond=`echo "$lineEntry" | awk -F'[:,]' '{print $6}'`
38: 
39:         description=`echo "$lineEntry" | awk -F'[:, ]' '{print $7}'`
40: 
41:         beginSeconds=`awk "BEGIN {print ($startHour*3600+$startMinute*60+$startSecond)}"`
42:         stopSeconds=`awk "BEGIN {print ($endHour*3600+$endMinute*60+$endSecond)}"`
43:         duration=`awk "BEGIN {print $stopSeconds-$beginSeconds}"`
44: 
45:         newDate=$(date -d "@$(( $(date -d "${origDate}" +%s) + ${beginSeconds}))" +'%Y-%m-%d_%H-%M-%S')
46: 
47:         new="${newDate}_${description}"
48:         echo "${lineEntry}"
49:         echo "${origDate}"
50:         echo "${beginSeconds}"
51:         echo "${new}"
52:         echo ""
53:         
54:         #~/bin/ffmpeg -n -vsync drop -fflags +genpts -i "$sourceFile" -ss "$beginSeconds" -t "$duration" -c:v libx265 -crf 27 -preset slow "$new.mkv"
55: 
56: 
57:     done
58:     
59: #rm "/dev/shm/${base}.${extension}"

Quando executo o script neste formulário, obtenho a seguinte saída correspondente às linhas 48-52 do script:

01: 00:49:30,00:53:00 DescriptionA
02: 2017-05-15 14:17:22
03: 2970
04: 2017-05-15_15-06-52_DescriptionA
05: 
06: 03:33:30,03:38:40 DescriptionB
07: 2017-05-15 14:17:22
08: 12810
09: 2017-05-15_17-50-52_DescriptionB
10: 
11: 04:54:32,04:55:37 DescriptionC
12: 2017-05-15 14:17:22
13: 17672
14: 2017-05-15_19-11-54_DescriptionC
15: 
16: 04:54:32,04:55:37 DescriptionC
17: 2017-05-15 14:17:22
18: 17672
19: 2017-05-15_19-11-54_DescriptionC

Como você pode ver, a nova data/hora esperada é exibida corretamente nas linhas 4,9,14 (não tenho certeza porque a última linha do $trimFileé exibida duas vezes, mas isso não é minha preocupação no momento).

O problema está na renomeação real do arquivo quando removo as linhas comentadas (linhas 13, 14, 54, 59) do script para que o script agora fique assim:

01: sourceFile="${1}"
02: trimFile="${2}"
03: 
04: IFS=$'\n'
05: 
06: dos2unix "$trimFile"
07: numberOfSegments=`cat "$trimFile" | wc -l`
08: numberOfSegments=$((numberOfSegments + 1))
09: extension=`echo "$sourceFile" | awk -F'.' '{print $NF}'`
10: 
11: base=`echo "$sourceFile" | sed -e "s|.$extension||g"`
12: 
13: ~/bin/ffmpeg -i "${sourceFile}" -c:v copy "/dev/shm/$base.${extension}"
14: sourceFile="/dev/shm/$base.${extension}"
15: 
16: # File date/time information
17: origYear="${sourceFile:0:4}"
18: origMonth="${sourceFile:5:2}"
19: origDay="${sourceFile:8:2}"
20: origHour="${sourceFile:11:2}"
21: origMinute="${sourceFile:14:2}"
22: origSecond="${sourceFile:17:2}"
23: 
24: origDate="${origYear}-${origMonth}-${origDay} ${origHour}:${origMinute}:${origSecond}"
25: 
26: for (( i=1;i<="$numberOfSegments";i++ ))
27:     do
28: 
29:         lineEntry=`cat "$trimFile" | head -"$i" | tail -1`
30: 
31:         startHour=`echo "$lineEntry" | awk -F'[:,]' '{print $1}'`
32:         startMinute=`echo "$lineEntry" | awk -F'[:,]' '{print $2}'`
33:         startSecond=`echo "$lineEntry" | awk -F'[:,]' '{print $3}'`
34: 
35:         endHour=`echo "$lineEntry" | awk -F'[:,]' '{print $4}'`
36:         endMinute=`echo "$lineEntry" | awk -F'[:,]' '{print $5}'`
37:         endSecond=`echo "$lineEntry" | awk -F'[:,]' '{print $6}'`
38: 
39:         description=`echo "$lineEntry" | awk -F'[:, ]' '{print $7}'`
40: 
41:         beginSeconds=`awk "BEGIN {print ($startHour*3600+$startMinute*60+$startSecond)}"`
42:         stopSeconds=`awk "BEGIN {print ($endHour*3600+$endMinute*60+$endSecond)}"`
43:         duration=`awk "BEGIN {print $stopSeconds-$beginSeconds}"`
44: 
45:         newDate=$(date -d "@$(( $(date -d "${origDate}" +%s) + ${beginSeconds}))" +'%Y-%m-%d_%H-%M-%S')
46: 
47:         new="${newDate}_${description}"
48:         echo "${lineEntry}"
49:         echo "${origDate}"
50:         echo "${beginSeconds}"
51:         echo "${new}"
52:         echo ""
53:         
54:         ~/bin/ffmpeg -n -vsync drop -fflags +genpts -i "$sourceFile" -ss "$beginSeconds" -t "$duration" -c:v libx265 -crf 27 -preset slow "$new.mkv"
55: 
56: 
57:     done
58:     
59: rm "/dev/shm/${base}.${extension}"
60: 
61: 

Os arquivos criados pelo script são nomeados da seguinte forma:

1969-12-31_19-49-30_DescriptionA.mkv
1969-12-31_22-33-30_DescriptionB.mkv
1969-12-31_23-54-32_DescriptionC.mkv

Obviamente, as datas usadas para nomear o arquivo não são nada parecidas com a saída para stout criada quando eu não recodifiquei o vídeo, mas apenas testei se as novas variáveis ​​de data estavam sendo calculadas corretamente.

Então, minha pergunta se resume a isso, por que, depois de fazer algumas contas de data/hora, a data/hora está correta quando ecoada para robusta, mas totalmente errada quando usada para nomear os arquivos uma vez codificados.

Obrigado!

bash shell-script
  • 2 respostas
  • 52 Views
Martin Hope
Brian
Asked: 2020-08-26 17:51:40 +0800 CST

formatação putty

  • 6

Quando executo o seguinte one-liner, obtenho uma saída run-on no PuTTY da seguinte forma:
( \adicionado abaixo para facilitar a leitura, que não está incluído no script one-liner real) Screensnhot1

fileName=10M.csv ; \
for k in {1..3}; do for i in {1..1}; do for j in {blue,red,yellow}; do \ 

working=`cat "$fileName" | \
awk -v i=$i -v j=$j -v k=$k -F',' '{ if ( $1 == j && $2 == i && $3 == k ) print $1","$2","$3","$4","$13","$14}'`; \
nJ=${j:0:1}; \
nJ=${nJ^^}; \
echo "$i $j $nJ $k"; \
new="$i""_""$nJ""_""$k""_.txt"; \
echo $new; \
echo $working; \

done; done; done


No entanto, obtenho uma boa saída se simplificar o script removendo a working=parte da linha 3 [sem contar as linhas em branco] e os "tiques" correspondentes, de modo que sejam catexecutados conforme o esperado; não é até que seja encerrado na workingvariável que a tabela CSV se torna executada quando echo-ed: Captura de tela2

fileName=10M.csv ; \
for k in {1..3}; do for i in {1..1}; do for j in {blue,red,yellow}; do \ 

cat "$fileName" | \
awk -v i=$i -v j=$j -v k=$k -F',' '{ if ( $1 == j && $2 == i && $3 == k ) print $1","$2","$3","$4","$13","$14}'; \
nJ=${j:0:1}; \
nJ=${nJ^^}; \
echo "$i $j $nJ $k"; \
new="$i""_""$nJ""_""$k""_.txt"; \
echo $new; \

done; done; done


O que há de errado com meu script para produzir a saída run-on no PuTTY?

  • Suponho que tenha a ver com awk, mas sou minimamente qualificado em AWK e tentei enviar por correio a awksintaxe adequada ao trabalhar com arquivos CSV.
putty bash-scripting
  • 1 respostas
  • 141 Views
Martin Hope
Brian
Asked: 2020-08-15 15:27:15 +0800 CST

Bash Scripting: valor da variável não atualizando no script "one-liner"

  • 5

No "one-liner" a seguir, quando altero o IDvalor da variável no início do script, a diskvariável a seguir parece não ser atualizada. Ou seja, no final do script, a >> /md0/DiskAnalysis/$disk.txtparte usa o valor da $diskvariável que foi gerada por um $IDvalor de variável diferente daquele definido no início do script.

Script completo de uma linha

nohup sh -c ID="c"; disk=`udevadm info --query=all /dev/sd$ID | grep ID_SCSI_SERIAL | awk -F'=' '{print $2}'`; size=`lsblk -b --output SIZE -n -d /dev/sd$ID`; size=`echo "$size / 1024 / 1024 / 10" | bc`; for i in $(seq 0 $size); do dd if=/dev/sd$ID of=/dev/shm/$ID.dd bs=10M skip=$i count=1 2>1; sha256=`sha256sum /dev/shm/$ID.dd | awk -F' ' '{print $1}'`; md5=`md5sum /dev/shm/$ID.dd | awk -F' ' '{print $1}'`; echo "$i,$sha256,$md5" >> /md0/DiskAnalysis/$disk.txt; done &

Então, quando eu mudo ID="b"para ID="c", o

disk=`udevadm info --query=all /dev/sd$ID | grep ID_SCSI_SERIAL | awk -F'=' '{print $2}'`

parte do script não atualiza seu valor para refletir a alteração no $IDvalor da variável. No entanto, se eu fosse executar o seguinte sozinho no terminal:

ID="b"; disk=`udevadm info --query=all /dev/sd$ID | grep ID_SCSI_SERIAL | awk -F'=' '{print $2}'`; echo $disk

e

ID="c"; disk=`udevadm info --query=all /dev/sd$ID | grep ID_SCSI_SERIAL | awk -F'=' '{print $2}'`; echo $disk

Eu recebo dois valores diferentes para $disk.

O que estou perdendo que está resultando na $diskatualização do valor da variável no script completo?

No momento, estou assumindo que a alteração no $IDvalor em outras partes do script (ou seja, as somas de verificação) está funcionando corretamente. No entanto, como o $diskvalor não está sendo atualizado corretamente, a saída não está gravando no arquivo desejado. Na verdade, toda vez que executo o script com um $IDvalor diferente do original ( ID="b"), a saída do restante do script é gravada no arquivo de saída (ou seja, $disk) definido pelo primeiro original $ID.

Obrigado.

linux terminal
  • 2 respostas
  • 516 Views
Martin Hope
Brian
Asked: 2020-04-14 20:06:27 +0800 CST

Powershell: avalia a expressão matemática representada como string

  • 5

No PowerShell, como avalio uma expressão matemática armazenada como string? Como faço para que o PowerShell avalie o seguinte:

C:\> $a="30000/1001"
C:\> $a

30000/1000
C:\>

Saída desejada:

C:\> $a="30000/1001"
C:\> <some command>

29.97002997003
C:\>

No Linux eu poderia fazer o seguinte (e é basicamente o que eu quero fazer no PowerShell):

user@computer:/path# a="30000/1001"
user@computer:/path# echo "scale=5; $a" | bc
29.97002
powershell string
  • 1 respostas
  • 704 Views
Martin Hope
Brian
Asked: 2020-04-11 20:25:49 +0800 CST

Parâmetros do Powershell: como ler a ordem da entrada do usuário

  • 5

Estou tentando determinar a ordem em que o usuário insere os parâmetros. Então, usando o seguinte exemplo:

function RepeatParamOrder {
    [CmdletBinding()]
    param
    (
        [bool]$param1=$false,
        [bool]$param2=$false,
        [bool]$param3=$false
    )

    Write-Output <order user entered params>
}

Se o usuário digitar o seguinte:

C:\>RepeatParamOrder -param3 true -param1 true

Eu gostaria idealmente de capturar a seguinte ordem em algum formato delimitado:(param3,param1)

A razão pela qual a ordem é importante é que existem muitos, muitos parâmetros que o usuário pode inserir e a ordem em que eles inserem os parâmetros é a ordem em que uma matriz RETURN produzirá valores associados a esses parâmetros. Portanto, neste exemplo, uma matriz 2-D de matrizes com dados associados (param3,param1)é retornada e param2ignorada, pois o usuário não deseja essa informação.

Estou procurando há mais de uma hora uma solução que permita ao script ler os parâmetros do pedido conforme inseridos, mas não tive sorte em encontrar uma solução. Também procurei como simplesmente ler a linha inteira C:\>RepeatParamOrder -param3 true -param1 truepara poder criar um loop para analisar as informações. E, embora pareça básico que deva haver um comando que simplesmente retorne o texto da linha, também não consigo encontrar essa solução. Eu examinei Get-Contente Read-Hosteles não parecem fornecer uma solução (ou seja, uma vez que o usuário insere os valores dos parâmetros, a função/script fará todo o resto sem a necessidade de entrada adicional do usuário - como fornecer ordem além da ordem em que os parâmetros nomeados já estão entrou).

Deve haver uma solução óbvia, mas estou procurando as palavras-chave erradas ou interpretando mal uma solução (por exemplo, talvez Read-Hostseja a solução, mas não estou entendendo corretamente para extrair informações da entrada original do parâmetro do usuário).

powershell parameters
  • 1 respostas
  • 266 Views
Martin Hope
Brian
Asked: 2020-04-02 22:36:41 +0800 CST

Analisar linhas gravadas no padrão em "tempo real"

  • 5

Primeiro, estou aprendendo Powershell há cerca de uma semana, principalmente adaptando scripts Linux para rodar em minha máquina Windows (mais poderosa). Então, por favor, seja gentil com a linguagem.

Estou tentando escrever um script que analisa um fluxo de dados de string gravados em stdout por outro comando enquanto está sendo gravado. A quantidade de dados que estão sendo gravados é grande e demorada e seria bom processá-los conforme são gravados, em vez de gravá-los em um arquivo de texto e, posteriormente, processá-los.

A saída são strings ASCII com um delimitador de nova linha (ou sendo Windows, talvez um retorno de carro também). Aqui está efetivamente o que eu quero fazer:

foreach ($i in (ffprobe -i "$sourceFile" -show_frames))
{

    if ("$i".Substring(0,1) -eq "[" -and "$i".Substring(1,1) -ne "/")
    {
        echo "$i".Substring(0,1)
        echo "$i".Substring(1,1)
        echo "$i"
        <do other stuff>
    }
}

O ffprobe -i "$sourceFile" -show_framescomando gera texto como:

[FRAME]
DATA1
DATA1
[/FRAME]

Basicamente, quero tratar os dados que estão sendo gravados no stdout como um 'loop while' até que não haja mais conteúdo sendo gravado. Só preciso analisar uma linha de dados por vez. Dito e feito, eu esperaria que o número de linhas sendo produzidas variasse entre 5 e 10 milhões de linhas.

FYI, minha máquina deve ser capaz de lidar com a quantidade de dados. Tenho dual Xeon E5 v3 com 12 núcleos (24 com hyperthreading) e 128 GB de RAM. Conforme eu processo os dados, aproximadamente a cada 10-15 linhas de saída serão processadas e gravadas em um arquivo de texto - embora eu possa criar uma variável de buffer para gravar a saída processada e liberá-la em um arquivo a cada poucos milhares de linhas de saída.

Agradecemos antecipadamente por alguma orientação.

powershell script
  • 1 respostas
  • 186 Views
Martin Hope
Brian
Asked: 2019-08-07 15:26:02 +0800 CST

Atribuir base de valor variável em outra variável que ainda não existe no Bash

  • 5

Para um script BASH, preciso atribuir o valor de outra variável que ainda não existe a uma variável anterior em um script. No entanto, não preciso chamar a variável anterior até que a variável posterior tenha um valor atribuído.

Basicamente, preciso que a variável, a, na linha 32 (entre outras instâncias) assuma o valor atribuído a outra variável, t, que não existe até a linha 132 (e cujo valor mudará com o loop). A variável anão é chamada até que tum valor seja atribuído. Acho que poderia encontrar uma solução alternativa com um segundo conjunto de instruções CASE após a linha 135, mas se o que eu quero realizar for possível, isso me pouparia tempo e seria uma nova técnica que eu poderia adicionar também ao meu cinto de ferramentas para scripts futuros .

Então, o que eu quero fazer é possível e, em caso afirmativo, como posso realizá-lo. Desde já, obrigado.

1   IFS=$'\n'                               
2                                   
3   for i in {Gamma,Saturation,Brightness,Contrast}; do                             
4       for j in {Gamma,Saturation,Brightness,Contrast}; do                         
5           for k in {Gamma,Saturation,Brightness,Contrast}; do                     
6               for m in {Gamma,Saturation,Brightness,Contrast}; do                 
7                                   
8                   if [[ $i == $j || $i == $k || $i == $m || $j == $k || $j == $m || $k == $m ]]; then             
9                       continue            
10                  fi              
11                                  
12                  count=1             
13                                  
14                  s1=""               
15                  e1=""               
16                  i1=""               
17                  s2=""               
18                  e2=""               
19                  i2=""               
20                  s3=""               
21                  e3=""               
22                  i3=""               
23                  s4=""               
24                  e4=""               
25                  i4=""               
26                                  
27                  case $i in              
28                      Gamma)          
29                          s1=0.80     
30                          e1=1.20     
31                          i1=0.20     
32                          a=$t        
33                          ;;      
34                      Saturation)         
35                          s1=-20      
36                          e1=20       
37                          i1=20       
38                          b=$t        
39                          ;;      
40                      Brightness)         
41                          s1=-15      
42                          e1=15       
43                          i1=5        
44                          c=$t        
45                          ;;      
46                      Contrast)           
47                          s1=-30      
48                          e1=60       
49                          i1=10       
50                          d=$t        
51                          ;;      
52                  esac                
53                  case $j in              
54                      Gamma)          
55                          s2=0.80     
56                          e2=1.20     
57                          i2=0.20     
58                          a=$x        
59                          ;;      
60                      Saturation)         
61                          s2=-20      
62                          e2=20       
63                          i2=20       
64                          b=$x        
65                          ;;      
66                      Brightness)         
67                          s2=-15      
68                          e2=15       
69                          i2=5        
70                          c=$x        
71                          ;;      
72                      Contrast)           
73                          s2=-30      
74                          e2=60       
75                          i2=10       
76                          d=$x        
77                          ;;      
78                  esac                
79                  case $k in              
80                      Gamma)          
81                          s3=0.80     
82                          e3=1.20     
83                          i3=0.20     
84                          a=$y        
85                          ;;      
86                      Saturation)         
87                          s3=-20      
88                          e3=20       
89                          i3=20       
90                          b=$y        
91                          ;;      
92                      Brightness)         
93                          s3=-15      
94                          e3=15       
95                          i3=5        
96                          c=$y        
97                          ;;      
98                      Contrast)           
99                          s3=-30      
100                         e3=60       
101                         i3=10       
102                         d=$y        
103                         ;;      
104                 esac                
105                 case $m in              
106                     Gamma)          
107                         s4=0.80     
108                         e4=1.20     
109                         i4=0.20     
110                         a=$z        
111                         ;;      
112                     Saturation)         
113                         s4=-20      
114                         e4=20       
115                         i4=20       
116                         b=$z        
117                         ;;      
118                     Brightness)         
119                         s4=-15      
120                         e4=15       
121                         i4=5        
122                         c=$z        
123                         ;;      
124                     Contrast)           
125                         s4=-30      
126                         e4=60       
127                         i4=10       
128                         d=$z        
129                         ;;      
130                 esac                
131                                 
132                 for t in `seq $s1 $i1 $e1`; do              
133                     for x in `seq $s2 $i2 $e2`; do          
134                         for y in `seq $s3 $i3 $e3`; do      
135                             for z in `seq $s4 $i4 $e4`; do  
136                                 
137                                 if [[ $s1 == "0.80" ]]; then k=`printf "%0.2f\n" $t`; t=$k; fi
138                                 if [[ $s2 == "0.80" ]]; then k=`printf "%0.2f\n" $t`; x=$k; fi
139                                 if [[ $s3 == "0.80" ]]; then k=`printf "%0.2f\n" $t`; y=$k; fi
140                                 if [[ $s4 == "0.80" ]]; then k=`printf "%0.2f\n" $t`; z=$k; fi
141                                 
142                                 echo $a $b $c $d $t $x $y $z
143                                 echo "Color_""$a""_""$b""_""$c""_""$d"".tif"
144                                 echo "Color_Glossy_""$i""_""$j""_""$k""$m""/"
145                                 echo ${i:0:1}" "$t" "${j:0:1}" "$x" "${k:0:1}" "$y" "${m:0:1}" "$z".tif"
146                                 echo ""
147                                 sleep 0.1
148                             done    
149                         done        
150                     done            
151                 done                
152             done                    
153         done                        
154     done                            
155 done                                

Embora eu ainda adoraria saber se minha pergunta original pode ser resolvida da maneira que descrevi, aqui está minha solução alternativa, caso alguém que se depare com essa questão também queira ver uma solução - mesmo que não da maneira que procurei.

IFS=$'\n'

for i in {Gamma,Saturation,Brightness,Contrast}; do
    for j in {Gamma,Saturation,Brightness,Contrast}; do
        for k in {Gamma,Saturation,Brightness,Contrast}; do
            for m in {Gamma,Saturation,Brightness,Contrast}; do

                if [[ $i == $j || $i == $k || $i == $m || $j == $k || $j == $m || $k == $m ]]; then
                    continue
                fi

                mkdir "Color_Glossy_""$i""_""$j""_""$k""_""$m"

                count=0001

                case $i in 
                    Gamma)
                        s1=0.80
                        e1=1.20
                        i1=0.20
                        ;;
                    Saturation)
                        s1=-20
                        e1=20
                        i1=20
                        ;;
                    Brightness)
                        s1=-15
                        e1=15
                        i1=5s
                        ;;
                    Contrast)
                        s1=-30
                        e1=60
                        i1=10
                        ;;
                esac
                case $j in 
                    Gamma)
                        s2=0.80
                        e2=1.20
                        i2=0.20
                        ;;
                    Saturation)
                        s2=-20
                        e2=20
                        i2=20
                        ;;
                    Brightness)
                        s2=-15
                        e2=15
                        i2=5
                        ;;
                    Contrast)
                        s2=-30
                        e2=60
                        i2=10
                        ;;
                esac
                case $k in 
                    Gamma)
                        s3=0.80
                        e3=1.20
                        i3=0.20
                        ;;
                    Saturation)
                        s3=-20
                        e3=20
                        i3=20
                        ;;
                    Brightness)
                        s3=-15
                        e3=15
                        i3=5
                        ;;
                    Contrast)
                        s3=-30
                        e3=60
                        i3=10
                        ;;
                esac
                case $m in 
                    Gamma)
                        s4=0.80
                        e4=1.20
                        i4=0.20
                        ;;
                    Saturation)
                        s4=-20
                        e4=20
                        i4=20
                        ;;
                    Brightness)
                        s4=-15
                        e4=15
                        i4=5
                        ;;
                    Contrast)
                        s4=-30
                        e4=60
                        i4=10
                        ;;
                esac

                for t in `seq $s1 $i1 $e1`; do
                    for x in `seq $s2 $i2 $e2`; do
                        for y in `seq $s3 $i3 $e3`; do
                            for z in `seq $s4 $i4 $e4`; do

                                if [[ $s1 == "0.80" ]]; then q=`printf "%0.2f\n" $t`; t=$q; fi
                                if [[ $s2 == "0.80" ]]; then q=`printf "%0.2f\n" $x`; x=$q; fi
                                if [[ $s3 == "0.80" ]]; then q=`printf "%0.2f\n" $y`; y=$q; fi
                                if [[ $s4 == "0.80" ]]; then q=`printf "%0.2f\n" $z`; z=$q; fi

                                case $i in 
                                    Gamma)
                                        a=$t
                                        ;;
                                    Saturation)
                                        b=$t
                                        ;;
                                    Brightness)
                                        c=$t
                                        ;;
                                    Contrast)
                                        d=$t
                                        ;;
                                esac
                                case $j in 
                                    Gamma)
                                        a=$x
                                        ;;
                                    Saturation)
                                        b=$x
                                        ;;
                                    Brightness)
                                        c=$x
                                        ;;
                                    Contrast)
                                        d=$x
                                        ;;
                                esac
                                case $k in 
                                    Gamma)
                                        a=$y
                                        ;;
                                    Saturation)
                                        b=$y
                                        ;;
                                    Brightness)
                                        c=$y
                                        ;;
                                    Contrast)
                                        d=$y
                                        ;;
                                esac
                                case $m in 
                                    Gamma)
                                        a=$z
                                        ;;
                                    Saturation)
                                        b=$z
                                        ;;
                                    Brightness)
                                        c=$z
                                        ;;
                                    Contrast)
                                        d=$z
                                        ;;
                                esac

                                old="Color_""$a""_""$b""_""$c""_""$d"".tif"
                                new="Color_Glossy_""$i""_""$j""_""$k""_""$m""/"$count" "${i:0:1}" "$t" "${j:0:1}" "$x" "${k:0:1}" "$y" "${m:0:1}" "$z".tif"

                                cp $old $new

                                count=$((10#$count+1))
                                countTmp=`printf "%04d\n" $count`
                                count=$countTmp
                            done
                        done
                    done
                done
            done
        done
    done
done
bash shell-script
  • 1 respostas
  • 148 Views
Martin Hope
Brian
Asked: 2019-04-14 13:40:32 +0800 CST

script bash: saída de eco truncada e na ordem errada

  • 1

Estou tendo um problema com um script bash que está ecoando a saída em uma ordem inesperada. O roteiro é o seguinte. O problema está na saída das linhas 30-32.


1 IFS=$'\n'
2 i=1
3 bluered=""
4 blueyellow=""
5 redyellow=""
6 all=""
7 while [ $i -le `cat sorted.csv | wc -l` ]
8       do
9           for j in {0..2}
10               do
11                     # cat sorted.csv | head -$i | tail -1 | awk -F',' '{print $1}'
12                     declare "`cat sorted.csv | head -$i | tail -1 | awk -F',' '{print $1}'`=`cat sorted.csv | head -$i | tail -1 | awk -F','   '{print $5}'`"
13                     i=$((i+1))
14               done
15
16           if [[ ${blue} == ${red} ]]; then bluered=1; else bluered=0; fi
17           if [[ ${blue} == ${yellow} ]]; then blueyellow=1; else blueyellow=0; fi
18           if [[ ${red} == ${yellow} ]]; then redyellow=1; else redyellow=0; fi
19           if [[ ${blue} == ${red} ]] && [[ ${red} == ${yellow} ]]; then all=1; else all=0; fi
20
21           echo "`cat sorted.csv | head -$((i-3)) | tail -1`"
22           echo ",$all,$bluered,$blueyellow,$redyellow"
23           echo "`cat sorted.csv | head -$((i-2)) | tail -1`"
24           echo ",$all,$bluered,$blueyellow,$redyellow"
25           echo "`cat sorted.csv | head -$((i-1)) | tail -1`"
26           echo ",""$all"",""$bluered"",""$blueyellow"",""$redyellow"
27
28
29
30           echo  "`cat sorted.csv | head -$((i-3)) | tail -1`,$all,$bluered,$blueyellow,$redyellow"
31           echo  "`cat sorted.csv | head -$((i-2)) | tail -1`"",$all,$bluered,$blueyellow,$redyellow"
32           echo  "`cat sorted.csv | head -$((i-1)) | tail -1`"",""$all"",""$bluered"",""$blueyellow"",""$redyellow"
33       done

As linhas 30-32 têm uma formatação de aspas duplas ligeiramente diferente, pois eu estava tentando coisas diferentes para que funcionasse corretamente. As linhas 21-26 nada mais são do que as linhas 30-32 decompostas em 2 partes (ou seja, a linha 21-22 é igual à linha 30).

Com base no arquivo de entrada, "sorted.csv", a saída correta das linhas 30-32 (para as primeiras 3 linhas do arquivo de entrada) deve ser:

blue,1,WCC131035882,0,e89d89d7ca7c502ca8d3b2e0d7c4980dba346a63d57a437d8f1428065fb83e9f,0,0,0,1
red,1,Z292V5DB,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68,0,0,0,2
yellow,1,Z292V94K,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68,0,0,0,1

mas a saída real é:

,0,0,0,1CC131035882,0,e89d89d7ca7c502ca8d3b2e0d7c4980dba346a63d57a437d8f1428065fb83e9f #(line 30 output)
,0,0,0,192V5DB,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68 #(line 31 output)
,0,0,0,1,Z292V94K,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68 #(line 32 output)

As linhas 21 a 26 retornam a seguinte saída:

blue,1,WCC131035882,0,e89d89d7ca7c502ca8d3b2e0d7c4980dba346a63d57a437d8f1428065fb83e9f #(line 21 output)
,0,0,0,1 #(line 22 output)   
red,1,Z292V5DB,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68 #(line 23output)
,0,0,0,1 #(line 24 output)
yellow,1,Z292V94K,0,68a4917c878f1b26e370264097f476840aa995dc6b8d6d2e552a78a6bdd77c68 #(line 25)
,0,0,0,1 #(line 26 output)

Resumindo, quero concatenar a saída das linhas 21-22, 23-24 e 25-26 usando 3 comandos de linha única, como as linhas 30-32 (mas com a sintaxe correta). Observe que as linhas 21-26 estão incluídas apenas em o script para demonstrar que as duas partes da linha 30 (31 ou 32) estão funcionando corretamente quando separadas em duas linhas. Atualmente, a linha 30 concatena efetivamente a saída da linha 22 e depois da linha 21 em vez de 21 e depois 22. No entanto, ao fazer essa concatenação reversa, ela também trunca os primeiros 8 caracteres da saída da linha 21 (observe, a saída da linha 22 tem exatamente 8 caracteres).

Como escrevo corretamente as linhas 30-32 para que criem a saída desejada?

Agradecemos antecipadamente por sua ajuda.

linux bash script
  • 2 respostas
  • 2009 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve