У меня есть файл как это (с намного большим количеством строк):
01200 Carbon metabolism (1)
01210 2-Oxocarboxylic acid metabolism (1)
01212 Fatty acid metabolism (2)
01230 Biosynthesis of amino acids (1)
00020 Citrate cycle (TCA cycle) (1)
и я хочу заменить первое и последнее пространство для вкладки, как это:
01230\tBiosynthesis of amino acids\t(1)
00020\tCitrate cycle (TCA cycle)\t(1)
Я попробовал следующее:
sed 's/ /\t/;s/ (/\t(/' eg_kaas_pwmap > res.tsv
Это работало, но в строках как в соответствии с"(TCA cycle)
", я добрался \t
перед ним, как:
00020\tCitrate cycle\t(TCA cycle) (1).
Я попробовал некоторые модификации, но ни один из него не работал.
Что мне делать?
Это заменит первые и последние пробелы вкладками:
sed -E 's/^([^ ]*) /\1\t/; s/ ([^ ]*)$/\t\1/' pwmap
, Например:
$ sed -E 's/^([^ ]*) /\1\t/; s/ ([^ ]*)$/\t\1/' pwmap
01200 Carbon metabolism (1)
01210 2-Oxocarboxylic acid metabolism (1)
01212 Fatty acid metabolism (2)
01230 Biosynthesis of amino acids (1)
00020 Citrate cycle (TCA cycle) (1)
s/^([^ ]*) /\1\t/
, regex ^([^ ]*)
соответствует всем непробелам с начала строки до первого пробела и помещает их в группу 1. Это заменяется группой 1, сопровождаемой вкладкой.
s/ ([^ ]*)$/\t\1/
regex ([^ ]*)$
соответствует от последнего пробела до в конец строки со всеми непробелами, сохраненными в группе 1. Это - замена вкладкой, сопровождаемой группой 1.