2015-04-14 3 views
-1

У меня много файлов, и я должен найти одну строку в этих файлах и удалить и должен быть в терминале в linux. Кто-нибудь знает, как это сделать?найти и удалить строку в нескольких файлах

Пример

FileSystem

myFiles 
    + file1 
    + file2 
    ... 
    + file6500 

Файл

aaa0 
aaa1 
.... 
fff9 
+0

Можете ли вы быть более конкретным? Как сделать то, что * точно *? Удалить одну строку, соответствующую шаблону в каждом файле? Что вы пробовали и где вы застряли? –

ответ

1

Это удалит эту строку в каждом файле.

for f in myFiles/*; do 
    sed -i 'd/pattern that matches line that you want to delete/' $f 
done 

В качестве альтернативы вы также можете использовать awk.

tmp=$(mktemp) 
for f in myFiles/*; do 
    awk '!/pattern that matches the line that you want to delete/' $f > $tmp 
    cp $tmp $f 
done 
rm $tmp 

Образец здесь будет регулярным выражением. Вы можете указать различные варианты регулярных выражений, например. POSIX или расширено путем передачи различных флагов в sed или awk. Дайте мне знать, если это адекватно ответит на ваш вопрос.

После ответа на ваш вопрос, я нашел, что это дубликат: Delete lines in a text file that containing a specific string

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