← Back to team overview

sslug-teknik team mailing list archive

Re: shell scripting indsæt mange linier bestemt sted i fil

 

Frank Damgaard wrote:
Jon Bendtsen skrev:
 ...
måske awk? Måske en combination af:

max=$(cat $file | wc -l)
number=$(grep -n "regex")
head -$number
echo "line 1"
after=$(($max - $number))
tail -$after


AWK er nok lettere, f.eks. efter linie 17 ?
Se "man gawk", NR er "The total number of input records seen so far."
og da std. record separator er linieskift så er det linenummer.

gawk '
NR<17 || NR > 17 {
   print
   next ;
}
NR==17 {
  print ;
  print "detter er en ny laaaa...aaang linie1";
  print "detter er en ny laaaa...aaang linie2";
  # osv.
  next;
}
' < "$oldfil"  > "$newfil"



PS er det med DOS linieskift bør man måske lige konvertere til unix linieskift
og så tilbage bagefter...



jeg endte op med at bide i det sure æble og bare skrive det som en lang linie til sed

men da der alligevel skal tages en backup af den originale fil, vil awk nok være det mest generelle at bruge.

Jeg går udfra at man også kan anvende regexps til at finde ud af hvor der skal indsættes ting. Pt. er den fil jeg legede med i INI format så jeg skal bare indsætte ting efter [section] tags.


/daleif






Follow ups

References