Попробуйте напримерawk
:
cat oldfile | awk '{ print gensub ("(,\"[0-9]+),([0-9][0-9][0-9]),?([0-9][0-9][0-9])?,?([0-9][0-9][0-9]),?","\\1\\2\\3\\4","g");}' > newfile
Это работает и для больших чисел.
Пояснение:
awk
— программируемый фильтр. Команда, указанная здесь в командной строке (между внешними одинарными кавычками "'" ), будет выполняться для каждой строки ввода из вашего файла.
Программа awk выглядит так (другое форматирование):
{
print gensub ("(,\"[0-9]+),([0-9][0-9][0-9]),?([0-9][0-9][0-9])?,?([0-9][0-9][0-9]),?",
"\\1\\2\\3\\4",
"g");
}
Встроенная командаawk
-gensub
заменяет элементы, указанные в первом аргументе, заменой, указанной во втором. Если третий аргумент представляет собой строку, начинающуюся с "g" или "G", она заменит все вхождения (try до тех пор, пока не будет найдено ).
Что заменено? Первый аргумент — это регулярное выражение (q.v. )в двойных кавычках, вот части:,\
затем после [0-9]+
что означает цифру 0 -9 повторяется один или несколько раз (постфиксный оператор+
)затем ,
который является просто символом, затем [0-9][0-9][0-9]
и запятая ,
, за которой следует вопросительный знак?
(теперь вы знаете, что означает первая часть, но постфикс ?
новый -цифры запятой можно опустить ). Затем больше групп цифр и запятых, которые можно опустить -, это для больших чисел.
В этом объяснении я до сих пор опускал скобки (
и )
! Они отмечают те вещи, которые соответствуют выражению, но запоминаются. Во втором аргументе gensub
мы ссылаемся на объекты с первого \1
по четвертый \4
, которым были сопоставлены (числа ), и снова выводим их здесь.
Похоже, вы удалили таблицу разделов диска. Знаете ли вы, можете ли вы или кто-то, у кого есть доступ к компьютеру, записывать на диск как суперпользователь?
Воспользуйтесь таким инструментом, как testdisk , чтобы восстановить таблицу разделов. В противном случае вам придется переустанавливать ОС и восстанавливать из резервных копий все необходимые данные. Если потеря данных произошла не из-за того, что кто-то случайно переписал таблицу разделов, вы также можете убедиться, что диск не выходит из строя.