2016-04-06 2 views
0

У меня есть файл, в котором я извлек строки из других файлов. Проблема состоит в том, что некоторые из извлеченных строк имеют дополнительные данные в конце их, которые мне нужно удалить из-за некоторого форматирования. Пожалуйста, как мне уменьшить это:bash заменить строку коротким строковым регулярным выражением

eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http 

только это:

eqwerty 

(Первая строка на линии до "&"

ответ

0

запустить его через sed как так:

sed -e 's:&.*::' <yourlogfile> 

добавить -i флаг, если вы хотите изменить файл в месте

+0

Спасибо. Я стыдливо уже нашел это. И я возвращался, чтобы покаяться в своей RTFMedness. – Sina

1

Использование BASH со строками:

s='eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http' 

echo "${s%%&*}" 

Выход:

eqwerty 
+0

Я обычно рекомендую избегать выполнения такой замены строк в оболочке, поскольку она будет довольно медленной с длинными строками и большими файлами журнала. запуск его через sed (или любой другой такой двоичный файл) будет иметь тенденцию быть быстрее. особенно если строка не является ASCII. –

+0

** Это будет довольно медленно с длинными строками ** Просьба указать некоторые ссылки эталона, свидетельствующие о медлительности. – anubhava

+0

Это довольно тривиально, чтобы проверить это самостоятельно. У меня нет скриптов, которые я использовал для сравнения в прошлом, когда делал большую разработку скриптов оболочки. –

1

cut -f 1 -d '&' filename также будет работать.

>>>echo 'eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http' | cut -f 1 -d '&' 
eqwerty 
0

Если awk используется, возможно, они могли бы помочь:

awk -F'&' '{print $1}' file 
eqwerty 

Если awk's разделитель полей устанавливается на символ, чтобы удалить, Вы можете получить детали, которые вы хотите как $ 1

awk '{sub(/&.*/,""); print}' file 
eqwerty 

Использование gsub() для его замены пустой строкой

+0

Спасибо! Awk-fu всегда ценится. Я действительно борюсь с этим, поэтому я всегда склоняюсь перед теми, кто знает его тао. – Sina

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