2015-08-26 4 views
0

У меня есть строки в моем файле, который имеет следующий формат (вход):Как удалить расширение в строке

abchsfk/jshflka/ZN      (cellLVT) 

    asjkfsa/sfklfkshfsf/Z     (mobLVT) 

    asjhfdjkfd/sjfdskjfhdk/hsakfshf/Z  (celLVT) 

    asjhdjs/jhskjds/ZN      (abcLVT) 

    shdsjk/jhskd/ZN       (xyzLVT) 

выход:

abchsfk/jshflka      cell 

    asjkfsa/sfklfkshfsf     mob 

    asjhfdjkfd/sjfdskjfhdk/hsakfshf  cel 

    asjhdjs/jhskjds      abc 

    shdsjk/jhskd      xyz 

Я хочу удалить Z, ZN и LVT в строке.

Я пробовал с sed 's/LVT//g' <filename> и sed 's/Z*//g' <filename>.

+0

Я попытался с помощью этой команды СЕПГ 's/LVT // г' и СЭД ' s/Z * // g ' SKG

ответ

1

СЭД с регулярным выражением включено будет делать

sed -r 's_/Z|\(|LVT\)|/ZN__g' 

к сведению, что вы также извлекая открывающую скобку и другие строки, как /Z, /ZN и LVT).

+0

Спасибо. Он работал – SKG

1

Вы можете рассмотреть это (но использовать sed как karakfa показали, будет настоятельно рекомендуем):

with open('test.txt', 'rb') as f1: 
    with open('result.txt', 'w') as f2: 
     for line in f1: 
      # replace ZN should be do first (only for ZN and Z, not for others) 
      line = line.replace('/ZN', '') 
      line = line.replace('/Z', '') 
      line = line.replace('(', '') 
      line = line.replace('LVT', '') 
      line = line.replace(')', '') 
      f2.write(line) 
+0

@ Fei. Спасибо за эту идею. Я хочу написать для этого скрипт perl. У меня есть другие дела в том же файле. ваша идея полезна. – SKG

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