---
title: "Grep och awk"
type: "forum-thread"
url: "https://www.webforum.nu/amne/linux-bsd/50661-grep-och-awk"
topic: "Linux & BSD"
topic_url: "https://www.webforum.nu/amne/linux-bsd"
author: "Chavez"
published: "2002-08-18T15:09:50.000Z"
updated: "2002-09-28T21:13:52.000Z"
replies: 7
views: 274
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/linux-bsd/50661-grep-och-awk"
---

# Grep och awk

## #1 — Chavez, 2002-08-18T15:09Z

Hejsan! 

Har en liten uppgift. Vill genom bash gå igenom alla filer i en katalog (underkataloger också, rekursivt alltså), öppna dem med filtillägget .ihtml eller .php och sedan inne i dem ersätta modules.php med index.php. 

Alltså en search and replace på ett helt katalogträds textfiler. 

Har fått förslaget att göra detta med grep och awk. Att köra en grep med flaggan -R och sedan pipa det genom gawk. Men problemet är att jag kan mycket lite om båda. Någon som har lust och hjälpa till? ;)

Permalänk: https://www.webforum.nu/p/50661

## #2 — Robban, 2002-08-19T06:17Z

Ett exempel med find och sed.

Skapar en scriptfil som find sedan skall köra:

execsed.sh

```
#!/bin/sh

sed s/modules\.php/index\.php/g $1 > tmpfile
mv tmpfile $1
```

Sedan används find för att hitta rätt filer:

```
find ./ \( -name '*.[pP][hH][pP]' -o -name '*.[iI][hH][tT][mM][lL]' \) -exec /path/to/execsed.sh {} \;
```

Finns säkerligen både bättre och smidigare metoder, men ovanstående bör få jobbet gjort.

Permalänk: https://www.webforum.nu/p/756075

## #3 — Chavez, 2002-08-19T07:55Z

Vad gör skripten ovan? Ersätter de alla förekommster av modules.php i alla .php och .ihtml filer med index.php? Det är alltså texten i filerna som är det viktiga, inte filnamnen. Kan nämligen inte se det i skripten. Men det är förmodligen jag som inte kan :)

Permalänk: https://www.webforum.nu/p/756109

## #4 — GunnarD, 2002-08-19T15:50Z

find kommandot letar efter alla .php och alla .html filer den hittar från där du står och neråt i katalogstrukturen.

För varje fil den hittar kör den execsed.sh med filensnamn som argument (inklusive väg från där du står).
sed programet byter sedan ut alla modules.php til index.php den hittar i filen och skriver ut resultatet till filen zzz, zzz flyttas sedan så att den ersätter den ursprunliga filen.

Permalänk: https://www.webforum.nu/p/756359

## #5 — Chavez, 2002-08-19T16:58Z

Tackar för den förklaringen! Förlåt att jag tvivlade på dig Robban §e

Permalänk: https://www.webforum.nu/p/756398

## #6 — Chavez, 2002-08-19T17:26Z

Hmm då är jag här igen. Varför dummar sig mitt skal med och ge felmeddelanden på ditt skript Robban? :)

> ./execsed.sh: gt: command not found
> ./execsed.sh: tmpfile: command not found
> mv: cannot stat "tmpfile": Filen eller katalogen finns inte

Vadå gt? De två sista felmeddelandena kommer ju som på köpet efter det första.

Permalänk: https://www.webforum.nu/p/756406

## #7 — GunnarD, 2002-08-19T18:03Z

Kolla att du verkligen har \> tecknet i sed raden, inte &gt;

Permalänk: https://www.webforum.nu/p/756419

## #8 — Chavez, 2002-09-28T21:13Z

Nu känner jag mig dum. Hade tänkt och använda samma skript till en ny uppgift. Att ersätta mysql_query( med $db-\>sqlQuery men får det inte att funka! Någon?

Permalänk: https://www.webforum.nu/p/802285

---

Tråden på webben: https://www.webforum.nu/amne/linux-bsd/50661-grep-och-awk
