← Back to team overview

sslug-teknik team mailing list archive

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

 

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...


Follow ups

References