Подскажите, как удалить из файла подстроку, начиная с символа номер 62 и до конца строки (перевод каретки) ?
>Подскажите, как удалить из файла подстроку, начиная с символа номер 62 и
>до конца строки (перевод каретки) ?
>s/\(.\{62\}\).*/\1/g
>>Подскажите, как удалить из файла подстроку, начиная с символа номер 62 и
>>до конца строки (перевод каретки) ?
>>
>
>s/\(.\{62\}\).*/\1/gопс! спасибо.
а как это написать?
cat file .... ???
>[оверквотинг удален]
>>>до конца строки (перевод каретки) ?
>>>
>>
>>s/\(.\{62\}\).*/\1/g
>
>опс! спасибо.
>
>а как это написать?
>
>cat file .... ???cat file | sed '...'
Учите матчасть!
>[оверквотинг удален]
>>>до конца строки (перевод каретки) ?
>>>
>>
>>s/\(.\{62\}\).*/\1/g
>
>опс! спасибо.
>
>а как это написать?
>
>cat file .... ???sed 's/\(.\{62\}\).*/\1/g' < file.in > file.out
не , не работает :( наверное я не правильно поставил условие,
так как написано sed 's/\(.\{62\}\).*/\1/g' делается отсечение всего текста в каждой строке после 62ого символа,а нужно сделать, так, чтобы был найден символ в тексте 62 (этот символ может быть и на второй и на третьей, на любой строке) и потом удалить из файла подстроку, начинающуюся на символе 62 и заканчивающуюся возвратом каретки ( до конца строки), и все, остальные строки не трогать.
>а нужно сделать, так, чтобы был найден символ в тексте 62 (этот
>символ может быть и на второй и на третьей, на любой
>строке) и потом удалить из файла подстроку, начинающуюся на символе 62
>и заканчивающуюся возвратом каретки ( до конца строки), и все, остальные
>строки не трогать.Приведите пример входного файла и того, что должно получиться, а то непонятно, что вам нужно.
>Приведите пример входного файла и того, что должно получиться, а то непонятно,
>что вам нужно.входной:
s asda gf<eol>
kjhtufndsjuwf sdsf dsfdsfwrewr<eol>
werwerwer wrw<eol>
gfdgdfgd gfdgfgfgdfgdfgdf<eol>
.....
gfdg dgfdf dgfdfgdgfdgf<eol>
нужно удалить блок, начинающийся с символа номер 15 и заканчивающийся концом строки,
т.о. на выходе должно получиться:
s asda gf<eol>
kjhtu<eol>
werwerwer wrw<eol>
gfdgdfgd gfdgfgfgdfgdfgdf<eol>
.....
gfdg dgfdf dgfdfgdgfdgf<eol>
или еще вариант, нужно удалить блок, начинающийся с символа номер 11 и заканчивающийся номером 14, т.о. на выходе должно получиться:s asda gf<eol>
kfndsjuwf sdsf dsfdsfwrewr<eol>
werwerwer wrw<eol>
gfdgdfgd gfdgfgfgdfgdfgdf<eol>
.....
gfdg dgfdf dgfdfgdgfdgf<eol>Как можно такие правила реализовать на sed? Читаю сейчас доки, не могу найти похожие примеры :(
>нужно удалить блок, начинающийся с символа номер 15 и заканчивающийся концом строкиа можно вопрос: почему нельзя использовать cut(1): cut -c -15? Что за задача, коя требует таких извращений?
>нужно удалить блок, начинающийся с символа номер 15 и заканчивающийся концом строки,Судя по всему, символ перевода строки символом не считается?
Думается, тут проще всего взять awk или Perl, или Ruby, да прочитать файл посимвольно...
awk, наверное, более всего подходит...
bash$ echo abcdefghij$'\n'1234567890 | \
awk -vF=15 -vWC=0 \
'{if(WC + length() >= F) print substr($0,0,F+1-WC); else WC+=length()}'
Тут WC -- счётчик символов, а F -- номер символа, начиная с которого нужно резать строку.