fork(1) download
  1. #!/bin/bash
  2.  
  3. t=$(mktemp -t -d awkinator.XXXXXXXXXX) || exit
  4. cd "$t"
  5. trap 'rm -rf "$t"' EXIT ERR
  6.  
  7. cat <<\: >file1.txt
  8. Name Latin-small Roman Latin-caps
  9. F0 a I A
  10. F1 b II B
  11. F2 c III C
  12. F3 d IV D
  13. :
  14.  
  15. cat <<\: >file2.txt
  16. Lorem ipsum
  17. Roman here.
  18. LCaps here.
  19. LSmall here.
  20. Lorem ipsum
  21. :
  22.  
  23. awk -F "\t" 'BEGIN { split(":LSmall:Roman:LCaps", k, /:/) }
  24. NR==FNR { a[NR] = $0; n=NR; next }
  25. FNR==1 { next } # skip header
  26. {
  27. system("mkdir "$1)
  28. filename=$1"/"$1".txt"
  29. for(i=1; i<=n; i++) {
  30. line = a[i]
  31. for (j=2; j<=NF; ++j) {
  32. if (line ~ k[j]) {
  33. gsub(/here/, $j, line)
  34. break
  35. }
  36. }
  37. print line >>filename }
  38. }' file2.txt file1.txt
  39.  
  40. tail */*.txt
Success #stdin #stdout 0s 4532KB
stdin
Standard input is empty
stdout
==> F0/F0.txt <==
Lorem ipsum
Roman I.
LCaps A.
LSmall a.
Lorem ipsum

==> F1/F1.txt <==
Lorem ipsum
Roman II.
LCaps B.
LSmall b.
Lorem ipsum

==> F2/F2.txt <==
Lorem ipsum
Roman III.
LCaps C.
LSmall c.
Lorem ipsum

==> F3/F3.txt <==
Lorem ipsum
Roman IV.
LCaps D.
LSmall d.
Lorem ipsum