Удаление определенных строк из файла

У меня есть файл, содержащий некоторые данные как в следующем примере:

data1: it is my data
data2: some more data
data3: even some more data

То, что я хочу, является следующим выводом в другом файле:

it is my data
some more data
even some more data

Ведите меня, как сделать это!

5
задан 8 March 2014 в 21:38

6 ответов

Это должно работать:

sed -i .bak 's/[^:]*: *//' file

Объяснение: -i .bak отредактирует файл на месте и создаст резервное копирование названного оригинала filename.bak. s/pat/replacement/ замена средств pat с replacement. [^:]*: * средства соответствуют самой длинной строке не -: символы, сопровождаемые a : затем один или несколько располагает с интервалами. Конечный результат состоит в том, что это удалит все до первого : и следующие пробелы.

Этот подход имеет преимущество работы с data: или foo: или безотносительно и будет также работать, если у Вас будут несколько : на той же строке. Например, это может иметь дело с этим:

data: a line that contains : a colon!
9
ответ дан 8 October 2019 в 12:17

Это очень просто, если Вы используете awk:

awk -F ': ' '{for (i=2; i<=NF; i++) print $i}' file_name > new_file_name

Каждая строка разделяется в большем количестве полей с помощью ': ' как разделитель, и распечатайте все кроме первого поля. Вывод перенаправляется к new_file_name.

8
ответ дан 8 October 2019 в 12:17

Это похоже на задание для cut

cut -d: -f2- file > new_file
4
ответ дан 8 October 2019 в 12:17

Можно использовать Vim в режиме Ex:

ex -sc '%s/[^:]*: *//|x' file
  1. % поиск все строки

  2. s замена

  3. x сохраняет и закрывается

1
ответ дан 8 October 2019 в 12:17

Откройте файл в vim редактор следующим образом:

vi <filename>

и затем нажимают esc и затем следующее:

:%s/data.: //gc

Здесь %s используется для строковой замены

/, разделитель между командой, и строки

data.: первая строка, . используется для любого отдельного символа gc, используется, чтобы найти и подтвердить прежде, чем заменить

0
ответ дан 8 October 2019 в 12:17

Ваш входной файл похож на вывод команды grep, скажите:

grep data data*

, Если это действительно имеет место, можно использовать-h опцию самой команды grep для получения то, в чем Вы нуждаетесь:

grep -h data data*
0
ответ дан 8 October 2019 в 12:17

Другие вопросы по тегам:

Похожие вопросы: