как я могу удалить что-то из файла? - PullRequest
0 голосов
/ 21 сентября 2010

Я хочу удалить что-то из каждой строки файла, например: -

У меня есть следующий путь в файле:

/ var / lib / svn / repos / b1me/ products / payone / generic / code / core / db / fs-type / var / lib / svn / repos / b1me / products / payone / generic / code / fee / db / fs-type / var / lib / svn / repos/ b1me / products / payone / generic / code / merchantserver / db / fs-type

я хочу сделать что-то, чтобы стать

/ var / lib / svn /РЕПО / b1me / продукты / payone / generic / код / ​​core / / var / lib / svn / repos / b1me / products / payone / generic / code / fee / / var / lib / svn / repos / b1me / products / payone /универсальный / code / merchantserver /

Ответы [ 5 ]

4 голосов
/ 21 сентября 2010
sed 's#db/fs-type$##' myfile > myalteredfile
0 голосов
/ 21 сентября 2010

Один в perl:)

cat oldfile.txt | perl -nle "s/db\/fs-type//g; print;" > newfile.txt

0 голосов
/ 21 сентября 2010
so ross$ a=/x/y/db/fs-type
so ross$ b=${a%/db/fs-type}
so ross$ echo $b
/x/y

Так что теперь делать весь файл ...

so ross$ expand < dbf.sh
#!/bin/sh
t=/db/fs-type
while read f1 f2 f3; do
  echo ${f1%$t} ${f2%$t} ${f3%$t}
done
so ross$ cat dbf
/a/b/db/fs-type /c/d/db/fs-type /e/f/db/fs-type
/a/b/db/fs-type /c/d/db/fs-type /e/f/db/fs-type
/a/b/db/fs-type /c/d/db/fs-type /e/f/db/fs-type
/a/b/db/fs-type /c/d/db/fs-type /e/f/db/fs-type
so ross$ sh dbf.sh < dbf
/a/b /c/d /e/f
/a/b /c/d /e/f
/a/b /c/d /e/f
/a/b /c/d /e/f
so ross$ 
0 голосов
/ 21 сентября 2010

Я бы, наверное, использовал sed . После некоторых экспериментов я получил следующее

sed 's:/db/fs-type:/ :g' path.txt

для производства

/ var / lib / svn / repos / b1me / products / payone / generic / code / core / / var / lib / svn / repos / b1me / products / payone / generic / код / ​​сборы / / var / lib / СВН / репо / b1me /

, который, по-видимому, является желаемым выходом, при условии, что path.txt содержит исходный путь, в который вы хотите внести изменения.

Если вы хотите записать это в другой файл, команда будет выглядеть примерно так:

sed 's:/db/fs-type:/ :g' path.txt > new_path.txt
0 голосов
/ 21 сентября 2010

Вы можете переписать файл с помощью какого-либо редактора (например, nano, vi, vim и т. Д.) Или следовать инструкциям на этом сайте:

http://www.liamdelahunty.com/tips/linux_search_and_replace_multiple_files.php

Или заменить строку простым grep,как это:

http://www.debianadmin.com/howto-replace-multiple-file-text-string-in-linux.html

Когда я говорю переписать, я имею в виду заменить ": -" на "" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...