Как использовать Sed для замены всех символов перед двоеточием?

Как заменить следующую строку

hd_ma_prod_customer_ro:*:123456789:john.doe

с     john.doe

В основном мне нужно искать последний двоеточие (:) и удалять все до и включая его.

sed
25 голосов | спросил yihyoon 12 J0000006Europe/Moscow 2014, 20:24:01

3 ответа


39

Предполагая, что вы на самом деле имеете в виду, вы хотите удалить все до последнего двоеточия и оставить john.doe неповрежденным:

echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
  sed 's/.*://'

Объяснение:

Первая строка просто соединяет тестовую строку с кодом sed для целей.

Второй - это базовый sed замена . Часть между первым и вторым / - это регулярное выражение для поиска, а часть между вторым и третьим - это то, что заменить его ( ничего в этом случае, поскольку мы удаляем).

Для регулярного выражения . соответствует любому символу, * повторяет это количество раз (включая ноль) и : соответствует двоеточию. Так эффективно это все, за чем следует толстая кишка. Поскольку .* может содержать двоеточие, совпадение «жадное», и все до последнего двоеточия включены.

ответил Graeme 12 J0000006Europe/Moscow 2014, 20:35:19
7
sed -r 's/:/\t/g' filename | awk -F'\t' '{print $4}'

Я заменяю все вхождения : вкладкой , а затем с помощью awk, чтобы извлечь строку john.doe.

Если у вас нет файла, вы можете попробовать это.

echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' | 
awk -F'\t' '{print $4}'

По комментариям Graeme мы можем использовать awk, чтобы печатать последний столбец один, используя NF переменной awk, как показано ниже.

echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | sed -r 's/:/\t/g' | awk -F'\t' '{print $NF}'

Включение комментариев Грэйма, чтобы избавиться от ненужного sed

Команда может быть изменена, как показано ниже.

echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' | awk -F':' '{print $NF}'
ответил Ramesh 12 J0000006Europe/Moscow 2014, 20:34:56
4

Другой метод с использованием awk:

awk -F: '{ print $NF }'
ответил Chris Down 13 J0000006Europe/Moscow 2014, 06:57:26

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132