我怎么能从文件中删除一些东西?

时间:2010-09-21 13:20:45

标签: linux command-line file

我想从每行文件中删除一些内容,例如: -

我在文件中有以下路径:

  

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

我想做点什么成为

  

/ var / lib / svn / repos / b1me / products / payone / generic / code / core / / var / lib / svn / repos / b1me / products / payone / generic / code / fees / / var / lib / SVN /回购/ b1me /产品/ payone /通用/代码/ merchantserver /

5 个答案:

答案 0 :(得分:4)

sed 's#db/fs-type$##' myfile > myalteredfile

答案 1 :(得分:0)

您可以使用某些编辑器(如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

当我说重写时,我的意思是将“: - ”换成“”......

答案 2 :(得分:0)

我可能会使用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 / code / fees / / var / lib / SVN /回购/ b1me /

假设path.txt包含您希望更改的原始路径,

似乎是您想要的输出。

如果要在另一个文件中捕获它,该命令将类似于:

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

答案 3 :(得分:0)

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$ 

答案 4 :(得分:0)

perl中的一个:)

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