2015-08-12 2 views
0

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

test1.out:www.xyx.com 
test2.out:www.cnn.com 

, как я мог бы удалить первый столбец перед тем «:» и только остались:

www.xyx.com 
www.cnn.com 
+2

Каждый способный текстовый редактор может использовать регулярное выражение для глобального поиска и замены. Если вам это нужно на регулярной основе, вы можете использовать 'grep',' sed' или 'awk' в сочетании с регулярными выражениями. Взгляните на их «человеческие» страницы. – arkascha

ответ

3

Вы можете достичь это в vim с помощью команды :g (см. :h :g).

Команда, которую вы должны использовать это:

:g/.*/norm! df: 

Как говорит FDinoff в комментариях, это упрощает для

:%norm! df: 

Это запускает norm! df: на вводе команды в каждой строке в файле. norm! df: удалит все с начала строки до :.

+0

Что упрощает ':% norm! df: ' – FDinoff

+0

Я этого не знал, спасибо! – Zach

1

с AWK

awk -F: '{print $2}' filename 

с разрезом

cut -d: -f2 filename 

с СЭД

sed 's/.*://' filename 
0

Довольно легко, подставляя все перед : ни с чем. От Vim:

:%s/^.*:// 
+0

Будьте осторожны с жадностью '. *'. Он будет соответствовать последнему ':' на линии. Возможно, это не то, что вы хотите. Вы можете завершить это с помощью::% s/[^:] *:/'или':% s /. \ {-}: // '. –

Смежные вопросы