Sådan fjerner du null bytes fra en fil med sed, tr, awk eller Perl

Hvordan fjerner man null bytes fra en fil ved hjælp af sed? Forsøget med s/\000//g fjerner strenge af nuller, og s/\x00//g har ingen effekt. Hvordan kan dette gøres i et sed script?

At fjerne null bytes fra en fil ved hjælp af sed er udfordrende, så det anbefales at bruge tr, awk eller Perl, som er bedre egnet til binære data.

Hvordan fjerner man null bytes fra en fil ved hjælp af sed?

At fjerne null bytes fra en fil ved hjælp af sed kan være udfordrende, da sed traditionelt arbejder med tekststrømme og ikke binære data. Her er nogle metoder og overvejelser, der kan hjælpe:

  • Brug af tr kommandoen: En effektiv måde at fjerne null bytes på er ved at bruge tr kommandoen i stedet for sed. tr er designet til at håndtere binære data og kan nemt fjerne null bytes.
    tr -d '\000' < inputfile > outputfile
  • Brug af awk: En anden mulighed er at bruge awk, som også kan håndtere binære data.
    awk '{ gsub(/\x00/, ""); print }' inputfile > outputfile
  • Brug af Perl: Perl er meget kraftfuld til tekstmanipulation og kan nemt fjerne null bytes.
    perl -pe 's/\x00//g' inputfile > outputfile
  • Brug af sed med dd: Hvis du absolut skal bruge sed, kan du kombinere det med dd for at konvertere null bytes til en anden karakter, som sed kan håndtere, og derefter fjerne denne karakter.
    dd if=inputfile conv=ascii | sed 's/\x00//g' > outputfile

Bemærk, at sed ikke er det bedste værktøj til at håndtere binære data, og det er derfor ofte bedre at bruge værktøjer som tr, awk eller Perl til denne opgave.