Вам это подходит? Я приму этот формат:
A B C post_id
a,b,c,86680728811_272953252761568
a,b,c, 86680728811_273859942672742
a,b,c,86680728811_281125741936891
a,b,c,86680728811_10150500662053812
a,b,c,_86680728811_10150500969563812
a,b,c,86680728811_10150501303143812
a,b,c,86680728811_305275689511038
a,b,c,_86680728811_10150501624593812
a,b,c, 86680728811_10150501873973812
a,b,c,86680728811_145945585518261
Затем команды
cat file | sed -Ee 's/(.*)post_id/\1page ID post I/' -e 's/,[_ ]/,/' -e 's/_/,/'
Выход:
A B C page ID post ID
a,b,c,86680728811,272953252761568
a,b,c,86680728811,273859942672742
a,b,c,86680728811,281125741936891
a,b,c,86680728811,10150500662053812
a,b,c,86680728811,10150500969563812
a,b,c,86680728811,10150501303143812
a,b,c,86680728811,305275689511038
a,b,c,86680728811,10150501624593812
a,b,c,86680728811,10150501873973812
a,b,c,86680728811,145945585518261
-E
использовать расширенные регулярные выражения (GNU ), чтобы можно было захватывать группы.
Измените заголовок, чтобы добавить page ID post ID
захват первой группы (.*)
до post_id
и замену ее захваченной группой \1
и page ID post ID
's/(.*)post_id/\1page ID post ID/'
Удалите начальные пробелы и знак подчеркивания _
из строк после запятой и замените их одной запятой.
sed 's/,[_ ]/,/'
Наконец, замените символы подчеркивания _
запятой.
sed 's/_/,/'
Остерегайтесь, что я удалил команду cut
, которой не должно было быть там (это было напоминание о других командах, которые я пробовал)