Kuidas Bashis failinime ja laiendit eraldada

Bash

Sissejuhatus:

Bashis failidega töötades peate võib-olla sageli eraldama failinime selle laiendist. Levinud lähenemisviis kasutab käsku "cut", kuid see meetod võib ebaõnnestuda failinimede puhul, mis sisaldavad mitut punkti.

Näiteks failinimi nagu "a.b.js" jaotatakse valesti "a" ja "b.js" asemel "a.b" ja "js". Kuigi Python pakub lihtsat lahendust funktsiooniga "os.path.splitext()", ei pruugi Pythoni kasutamine alati kõige tõhusam valik. See artikkel uurib paremaid meetodeid selle ülesande täitmiseks Bashis.

Käsk Kirjeldus
${variable%.*} Parameetri laiendus laienduse eemaldamiseks failinimest.
${variable##*.} Parameetri laiendus laiendi failinimest eraldamiseks.
awk -F. Määrab välja eraldajaks punkti, mida kasutatakse failinime poolitamiseks.
OFS="." Väljundivälja eraldaja awk-s, kasutatakse failinime rekonstrueerimiseks ilma laiendita.
NF-- Vähendab awk väljade arvu ühe võrra, eemaldades tõhusalt laienduse.
${BASH_REMATCH} Massiiv, mis sisaldab Bashi regulaaravaldise vasteid.
local variable Deklareerib Bashi funktsioonis kohaliku ulatusega muutuja.

Bashi lahenduste üksikasjalik jaotus

Pakutavad skriptid pakuvad erinevaid meetodeid failinime ja selle laiendi eraldamiseks Bashis. Esimene skript kasutab Bashi parameetrite laiendust. Muutuja eemaldab laienduse, eemaldades kõik viimasest perioodist kuni stringi lõpuni, while jäädvustab laienduse, võttes kõik pärast viimast perioodi. See meetod on enamiku failinimestruktuuride jaoks lihtne ja tõhus. Teine skript kasutab , võimas tekstitöötlustööriist Unixi-laadsetes keskkondades. Määrates välja eraldaja perioodiks kasutades -F., võimaldab see failinime osadeks jagada. Väljundvälja eraldaja, ja väljade arvu vähendamine on tehnikad failinime uuesti kokkupanemiseks ilma selle laiendita.

Kolmas skript kasutab Bashis regulaaravaldisi, võimendades rühmade jäädvustamiseks regex-vastes. See skript kasutab mustrit, mis jagab failinime kahte rühma: üks põhinime ja teine ​​laiendi jaoks. Lõpuks kapseldab kohandatud funktsiooni skript parameetrite laiendamise loogika funktsiooni sees, parandades koodi korduvkasutatavust ja loetavust. See kasutab deklaratsioonid, et hoida muutujate ulatust funktsiooni sees, vältides soovimatuid kõrvalmõjusid suuremates skriptides. Iga meetod demonstreerib erinevat lähenemist sama probleemi lahendamisele, näidates Bashi skriptimise mitmekülgsust ja võimsust.

Parameetri laiendamise kasutamine Bashis

Bashi skriptimine

#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Awki kasutamine failinime ja laiendi eraldamiseks

Bash koos Awkiga

#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Regulaaravaldiste kasutamine Bashis

Bash-skriptimine regexiga

#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Kohandatud funktsiooni kasutamine Bashis

Bash-skriptimine kohandatud funktsiooniga

#!/bin/bash
# Function to extract filename and extension
extract_filename_extension() {
  local file="$1"
  echo "Filename: ${file%.*}"
  echo "Extension: ${file##*.}"
}
# Call the function with a file
extract_filename_extension "a.b.js"

Alternatiivsete meetodite uurimine Bashis failidega manipuleerimiseks

Lisaks juba käsitletud meetoditele on Bashis ka muid kasulikke tehnikaid failinimede ja laienditega manipuleerimiseks. Üks selline meetod hõlmab ja käske. saab kasutada failinime eraldamiseks teelt, while dirname otsib kataloogi tee. Nende käskude kombineerimine parameetrite laiendamisega võib failinimesid ja laiendusi tõhusalt eraldada. Näiteks kasutades eemaldab failinimest laiendi. See lähenemisviis on eriti kasulik, kui töötate mitte ainult failinimede, vaid täielike failiteedega.

Teine meetod hõlmab kasutamist , võimas vooredaktor teksti filtreerimiseks ja teisendamiseks. Luues sobivaid regulaaravaldisi, saab failinime ja laiendi isoleerida. Näiteks käsk poolitab failinime ja laiendi, paigutades need eraldi hõivamisrühmadesse. See tehnika on paindlik ja saab hakkama keerukate failinimestruktuuridega. Nende täiendavate tööriistade ja meetodite uurimine laiendab teie võimet Bashis failiandmetega manipuleerida, pakkudes tugevaid lahendusi erinevate skriptimisstsenaariumide jaoks.

Korduma kippuvad küsimused Bashi failiga manipuleerimise kohta

  1. Mis on eesmärk käsk?
  2. See eemaldab failinimest laienduse, eemaldades kõik pärast viimast punkti.
  3. Kuidas toimib käsutöö?
  4. See ekstraheerib laienduse, võttes failinimes kõik pärast viimast punkti.
  5. Mis teeb teha antud skriptis?
  6. See määrab välja eraldajaks punkti, võimaldades failinime osadeks jagada.
  7. Miks kasutada aastal an stsenaarium?
  8. See vähendab väljade arvu ühe võrra, eemaldades tõhusalt laiendi failinimest.
  9. Kuidas regulaaravaldised aitavad failinime ja laiendi väljavõtmist?
  10. Need võimaldavad mustrite sobitamist ja rühmitamist, mis võib eraldada failinime erinevad osad.
  11. Mis kasu on Bashis kohandatud funktsiooni kasutamisest?
  12. Kohandatud funktsioon suurendab koodi korduvkasutatavust ja loetavust, muutes skriptid modulaarsemaks.
  13. Kuidas abi failinimedega?
  14. See ekstraheerib failinime täielikust failiteest, soovi korral eemaldades laienduse.
  15. Saab kasutada failinimede manipuleerimiseks?
  16. Jah, saab kasutada regulaaravaldisi failinimede osade teisendamiseks ja eraldamiseks.

Failinime ja laiendi ekstraheerimise lahenduste kokkuvõte

Kokkuvõtteks võib öelda, et failinimede ja laiendite väljavõtmist Bashis saab tõhusalt saavutada erinevate meetodite abil, millest igaüks sobib erinevatele vajadustele ja eelistustele. Olenemata sellest, kas kasutate parameetrite laiendust, awk-i, sed-i või kohandatud funktsioone, pakuvad need tehnikad paindlikke ja tõhusaid lahendusi. Nende käskude mõistmine ja kasutamine tagab, et skriptid saavad vigadeta käsitleda mitme punktiga failinimesid ja muid keerukusi.