I have a TAB SEPARATED file with two columns like this:
original flattened
"H. H. Smith H H Smith
(A. Adams, 1861) A Adams 1861
(A. E. Verrill, 1885) A E Verrill 1885
(A. Solari et F. Solari, 1903) A Solari et F Solari 1903
(A.J. Wagner, 1909) AJ Wagner 1909
(Abeille de Perrin, 1904) Abeille de Perrin 1904
(Affa'a, 1986) Affa'a in Aescht, 2001 Affaa 1986 Affaa in Aescht 2001
(Agass. MS. ) Agass MS
(AH Clark, 1912) non Carpenter, 1888 AH Clark 1912 non Carpenter 1888
(Ahmad, 1985) Madhavi, 2011 nec Ahmad, 1985 Ahmad 1985 Madhavi 2011 nec Ahmad 1985
Now I want to replace all the short strings that are 3 characters or less from the second column with a space:
original flattened
"H. H. Smith Smith
(A. Adams, 1861) Adams 1861
(A. E. Verrill, 1885) Verrill 1885
(A. Solari et F. Solari, 1903) Solari Solari 1903
(A.J. Wagner, 1909) Wagner 1909
(Abeille de Perrin, 1904) Abeille Perrin 1904
(Affa'a, 1986) Affa'a in Aescht, 2001 Affaa 1986 Affaa Aescht 2001
(Agass. MS. ) Agass
(AH Clark, 1912) non Carpenter, 1888 Clark 1912 Carpenter 1888
(Ahmad, 1985) Madhavi, 2011 nec Ahmad, 1985 Ahmad 1985 Madhavi 2011 Ahmad 1985
I have tried the following:
awk -F"\t" '{OFS="\t";gsub(/\b.{1,3}\b/," ",$2);print $0;}' infile > outfile
awk -F"\t" '{OFS="\t";gsub(/\y.{1,3}\y/," ",$2);print $0;}' infile > outfile
awk -F"\t" '{OFS="\t";gsub(/\<.{1,3}\>/," ",$2);print $0;}' infile > outfile
awk -F"\t" '{OFS="\t";gsub(/[\s^].{1,3}[\s$]/," ",$2);print $0;}' infile > outfile
None of them seem to do anything. What am I missing?