Используя sed, вставьте пробел в 3-й последний индекс каждой строки - PullRequest
0 голосов
/ 25 апреля 2019

Я хотел бы вставить пробел перед 3-м последним символом каждой строки, чтобы превратить это:

CC287999221

CHGFFDTTT34AAA387

CH654AZ0987XX277

В это:

CC287999 221

CHGFFDTTT34AAA 387

CH654AZ0987XX 277

Пока что я пробовал:

sed -i 's/.*\(...\)/ \1/' file

Однако это также удаляет предыдущий текст.

Спасибо

Ответы [ 4 ]

3 голосов
/ 25 апреля 2019

В одну сторону:

sed 's/\(...$\)/ \1/' file

Просто сопоставьте последние 3 символа, подставляя вместо пробела, а затем соответствующий шаблон (\1)

1 голос
/ 25 апреля 2019

С awk не могли бы вы попробовать следующее.

awk '{print substr($0,1,length($0)-3),substr($0,length($0)-2)}' Input_file
0 голосов
/ 26 апреля 2019

Другое предложение awk:

awk '{sub(/.{3}$/," &")}1' file 
CC287999 221

CHGFFDTTT34AAA 387

CH654AZ0987XX 277
0 голосов
/ 26 апреля 2019

попробовал на GNU SED:

sed -E 's/\S{3}\s*$/ &/' file
...