Я использовал следующее (работает только если ваш текст не содержит|
):
cat myfile | tr '\t' '|' | column -t -s '|'
Это просто заменяет вкладки вертикальными чертами, а затем использует столбцы с вертикальными чертами в качестве разделителей.
(Я сделал это, потому что не увидел в ответе Стефана ничего, что могло бы сработать -или -коробку -в рыбьей оболочке. В противном случае ответ Стефана кажется хорошим.)
Думаю, это подойдет для GNUsed
:
sed -E 's/^([A-Z]+\.)[[:blank:]]([A-Z]+\.)/\1\2/' file
Я думаю, что лучше всего подойдет sed, вот моя версия:
sed -r ':a;s/^(.*\.)(\ )+(.\.)(.*)$/\1\3\4/;t a' file
-r -- use extended regular expressions
:a -- label "a"
^(.*\\.) -- 1st group matches any character "." from the line beginning up to a literal "\\.".
(\ )+ -- 2nd group matches white space (+ is one or more)
(.\.) -- 3rd group matches the next letter
(.*)$ -- 4th group matches to the end of the line
;t a -- if the previous substitution did something then branch to label "a"
/\1\2\4/ -- replaces the matches with groups 1,3,4 removing the space
Это обрабатывает произвольные сокращения, например. :S.O.V. Соверен