Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена одинарных кавычек, Как заменить? 
:(
    Опции темы
Relrin
Дата 20.2.2012, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Имеется в текстовом файле строка такого вида:
Цитата

find: 'etc/ssl/private': Отказано в доступе

Хочу получить более удобный вид этой строки, чтобы потом вывести в терминал
Цитата

Ошибка: etc/ssl/private - отказано в доступе


Пока с помощью команды sed изменил половину:
Код

sed -i 's/find/Ошибка/' $filename
sed -i 's/:/-/2' $filename


Остается только 2 момента:
1) как убрать одинарные кавычки, что находятся по обе стороны пути?
2) как изменить большую букву начала слова причины ошибки?
Прошу  помощи smile 

Это сообщение отредактировал(а) Relrin - 20.2.2012, 18:54
PM MAIL   Вверх
newbee
Дата 20.2.2012, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Код

sed -e "s/^[^:]*: '\([^']*\)/Ошибка: \1/"



--------------------
You're face to face
With man who sold the world
PM   Вверх
Relrin
Дата 20.2.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Только что попробовал, не получилось... Может я что-то неправильно делаю? 

http://s2.ipicture.ru/uploads/20120220/r4N90NDi.png

Это сообщение отредактировал(а) Relrin - 20.2.2012, 20:42
PM MAIL   Вверх
newbee
Дата 20.2.2012, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Лол, ну кто ж терминал фоткает :facepalm

Код

$ cat 1
ывыфа фыв
find: 'лялля'
qwe: 'dadaad'                                                                                         
выаыфв safadsf adf adf asdfas

$ sed -e "s/^[^:]*: '\([^']*\).*/Ошибка: \1/" 1
ывыфа фыв                                                                                             
Ошибка: лялля                                                                                         
Ошибка: dadaad                                                                                        
выаыфв safadsf adf adf asdfas


Добавлено через 1 минуту и 7 секунд
Тм еще хвост есть с "отказано в доступе". Сейчас...

Добавлено через 2 минуты и 31 секунду
Код

sed -e "s/^[^:]*: '\([^']*\)':\(.*\)/Ошибка: \1 -\2/"



--------------------
You're face to face
With man who sold the world
PM   Вверх
Relrin
Дата 20.2.2012, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Ок, вот кусок, кода целый smile 

Код

#!/bin/bash

#если аргументов меньше 3, то выводим ошибку, о нехватке их
if [ $# -lt 3 ]; then
    echo "Аргументов меньше 3: $#"
    exit 1
#если 3ий параметр указан не в виде пути - вывод ошибки
elif [ ! -d $3 ]; then
    echo "$3 не является директорией"
    exit 1
fi

find $3 -size +$1c -size -$2c -printf "$finder%p %s \n" 2>errors.txt

filename=errors.txt
#sed -i 's/find/Ошибка/' $filename
#sed -i 's/:/-/2' $filename
sed -e "s/^[^:]*: '\([^']*\)/Ошибка: \1/" $filename
#вывод строк из файла с ошибками
#cat $filename

PM MAIL   Вверх
newbee
Дата 20.2.2012, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



А вообще, если тебе надо просто убрать из строки все апострофы,
Код

sed -e "s/'//g"

Что-то я намудрила сначала ))


--------------------
You're face to face
With man who sold the world
PM   Вверх
Relrin
Дата 20.2.2012, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Да, уже получше выглядит немного smile
Цитата

Ошибка: `/etc/chatscripts- Отказано в доступе
Ошибка: `/etc/ssl/private- Отказано в доступе
Ошибка: `/etc/ppp/peers- Отказано в доступе
Ошибка: `/etc/cups/ssl- Отказано в доступе


Остается только символ ` убрать и уменьшить букву 

При этом, там, где идет изменение строки, пока так:
Код

sed -i 's/find/Ошибка/' $filename
sed -i 's/:/-/2' $filename
sed -i "s/'//g" $filename
cat $filename

И получатся соответственно то, что выше.
PM MAIL   Вверх
newbee
Дата 20.2.2012, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Код

sed -e "s/['\`]//g #Убирает апостроф и левую кавычку
sed -e "s/.*/\L&\E/" #в нижний регистр



--------------------
You're face to face
With man who sold the world
PM   Вверх
Relrin
Дата 20.2.2012, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 20.2.2012

Репутация: нет
Всего: нет



Спасибо большое, все работает как часы! smile 
PM MAIL   Вверх
newbee
Дата 20.2.2012, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



На здоровье.


--------------------
You're face to face
With man who sold the world
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.1328 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.