Bash:
Att använda reguljära uttryck
Hur man gör:
Grundläggande mönstermatchning
För att hitta om en sträng matchar ett mönster kan du använda grep
, ett kommandoradsverktyg för att söka i vanliga textdatauppsättningar efter rader som matchar ett reguljärt uttryck:
echo "Hej, Världen!" | grep -o "Världen"
# Utdata: Världen
Extrahera Specifik Data
För att extrahera delar av data som matchar dina regex-mönster kan du använda -o
med grep
:
echo "Fel: Filen hittades inte" | grep -oE "[A-Za-z]+:"
# Utdata: Fel:
Använda Regex med sed
sed
(stream editor) är ett kraftfullt verktyg för att tolka och omvandla text. Så här använder du sed
med regex för att ersätta text:
echo "Bash är toppen" | sed -e 's/toppen/fantastisk/'
# Utdata: Bash är fantastisk
Mönstermatchning i Villkorssatser
Bash stöder också regex i villkorssatser direkt:
[[ "https://exempel.com" =~ ^https?:// ]] && echo "URL är giltig" || echo "URL är ogiltig"
# Utdata: URL är giltig
Avancerad Mönstermatchning och Manipulation med awk
awk
är ett annat textbearbetningsverktyg som stöder mer komplex dataextraktion och manipulation. Det kan vara fördelaktigt när man arbetar med strukturerad textdata, som CSV:
echo -e "ID,Namn,Ålder\1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 " är äldre än 22."}'
# Utdata: Jane är äldre än 22.
Även om Bashs inbyggda regex-funktionaliteter täcker många användningsfall kan du för mycket avancerade regex-operationer överväga att använda en kombination av Bash-skript med perl
eller python
-skript, eftersom dessa språk erbjuder kraftfulla regex-bibliotek (t.ex. re
i Python). Ett enkelt exempel med Python:
echo "Fånga detta 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Utdata: 123
Att inkludera dessa programmeringsspråk vid behov kan hjälpa dig att utnyttja regex fulla kraft i dina Bash-skript.