annotate .bash_extras @ 9:f6f1deba62af default tip

sic
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Thu, 11 Jun 2026 21:16:59 +0100
parents 10dfd4feeaa0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
1 # General-purpose environment variables and utility functions
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
2 # Recommended for inclusion in ${HOME}/.bashrc via
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
3 # source /work/dc007/dc007/shared/.bash_extras
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
4 # Already sourced in singularity container _before_ bash is launched
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
5 # Note that $HOME (and therefore the meaning of ~ in paths) is
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
6 # set to $W in the singularity container for convenience, as it is
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
7 # assumed to be where you will spend most of your time
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
8
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
9 H=/home/dc007/dc007/${USER} # Only visible from login nodes
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
10 W=/work/dc007/dc007/${USER}
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
11
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
12 CCC=/work/dc007/shared/pod12/common_crawl
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
13 SHARED=/work/dc007/dc007/shared
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
14
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
15 PATH=$PATH:$HOME/.local/bin:$HOME/bin:$W/bin:$SHARED/bin
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
16
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
17 export H W CCC SHARED PATH
1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
18
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
19 cu ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
20 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
21 cvs update "$@" | egrep -v '^\?'
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
22 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
23
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
24 lss ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
25 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
26 ls -F --color=auto -lS "$@" | {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
27 read one;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
28 if [ -n "$one" -a "${one::5}" \!= "total" ]; then
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
29 echo "$one";
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
30 fi;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
31 cat
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
32 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
33 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
34
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
35 ff ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
36 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
37 pat=$1;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
38 shift;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
39 find . -iname "*$pat*" $@
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
40 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
41
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
42 typecat ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
43 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
44 tt=$(type $1);
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
45 case $tt in
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
46 *\ is\ hashed\ *)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
47 cat $(echo $tt | cut -f 4 -d ' ' | tr -d '()')
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
48 ;;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
49 *\ is\ /*)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
50 cat $(echo $tt | cut -f 3 -d ' ' | tr -d '()')
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
51 ;;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
52 *)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
53 type $1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
54 ;;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
55 esac
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
56 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
57
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
58 sus ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
59 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
60 sort "$@" | uniq -c | sort -k1nr,1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
61 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
62
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
63 uz ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
64 {
3
6c772ae7fce2 for 2026
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 1
diff changeset
65 igzip -dc "$@" # only works under sing
1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
66 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
67
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
68 function tot ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
69 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
70 awk '{sum+=$1} END {printf "%u\n",sum}'
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
71 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
72
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
73 btot ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
74 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
75 python3 -c 'import sys
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
76 multiCol = dostats = sample = False
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
77 c = ""
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
78 p = 0
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
79 q = None
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
80 d = 2
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
81 ssq = 0
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
82 while len(sys.argv)>1:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
83 if multiCol and sys.argv[1][0]!="-":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
84 p=1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
85 q=int(sys.argv.pop(1))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
86 elif sys.argv[1]=="-c":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
87 # add commas
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
88 c = ","
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
89 sys.argv.pop(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
90 elif sys.argv[1]=="-a":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
91 # do sum etc. for all columns [p]:q
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
92 multiCol = True
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
93 sys.argv.pop(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
94 try:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
95 q = int(sys.argv.pop(1))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
96 except IndexError:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
97 print("you must supply an N for multi-column")
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
98 exit(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
99 elif sys.argv[1]=="-s":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
100 # include mean and sample stdev
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
101 dostats = True
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
102 sample = True
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
103 sys.argv.pop(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
104 elif sys.argv[1]=="-p":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
105 # include mean and population stdev
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
106 dostats = True
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
107 sys.argv.pop(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
108 elif sys.argv[1]=="-d":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
109 sys.argv.pop(1)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
110 d=int(sys.argv.pop(1))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
111 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
112 break
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
113 n=0
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
114 if multiCol:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
115 w=q-p
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
116 import numpy as np
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
117 s=np.array([0]*w)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
118 n=np.array([0]*w)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
119 if dostats:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
120 ssq=np.array([0]*w)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
121 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
122 s=0
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
123 if dostats:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
124 ssq=0
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
125 import math
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
126 for l in sys.stdin: # ["1 11\n","2 22\n"]:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
127 try:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
128 if multiCol:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
129 ll=l.split()[p:q]
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
130 ii=np.array([(0 if i.startswith("NaN") else int(i)) for i in ll])
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
131 s+=ii
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
132 ssq+=ii*ii
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
133 n+=np.array([(0 if i.startswith("NaN") else 1) for i in ll])
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
134 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
135 if l[0]!="N":
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
136 i=int(l)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
137 s+=i
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
138 if dostats:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
139 ssq+=(i*i)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
140 n+=1
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
141 except (NameError,ValueError) as e:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
142 print(l,e,file=sys.stderr)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
143 if dostats:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
144 if multiCol:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
145 m=s/n
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
146 var=(ssq/n)-pow(m,2)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
147 if sample:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
148 var=(n/(n-1))*var
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
149 sd=pow(var,0.5)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
150 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
151 m=float(s)/float(n)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
152 var=(float(ssq)/float(n))-pow(float(m),2)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
153 if sample:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
154 var=(float(n)/float(n-1))*var
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
155 sd=math.sqrt(var)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
156 if dostats:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
157 if multiCol:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
158 print("\t".join(f"{i:{c}.{d}f}" for i in s))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
159 print("\t".join(f"{i:{c}.{d}f}" for i in m))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
160 print("\t".join(f"{i:{c}.{d}f}" for i in sd))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
161 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
162 print(f"{s:}\t{m:}\t{sd:}")
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
163 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
164 if multiCol:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
165 print("\t".join(f"{i:}" for i in s))
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
166 else:
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
167 print(f"{s:}")
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
168
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
169 ' "$@"
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
170 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
171
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
172 headtail ()
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
173 {
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
174 case "$1" in -*)
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
175 n="$1"
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
176 shift
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
177 ;;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
178 *) n="-10"
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
179 ;;
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
180 esac
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
181 cat "$@" | { sed -u ${n:1}q ; echo === ; tail $n ; }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
182 }
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
183
fef95c7a391f for general use...
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff changeset
184 export -f cu lss ff typecat sus uz tot btot headtail
7
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
185
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
186
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
187
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
188
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
189
Henry S. Thompson <ht@inf.ed.ac.uk>
parents: 3
diff changeset
190