bash:用换行符'./'代替换行符

时间:2011-08-03 16:39:14

标签: string bash replace find newline

使用find后我需要迭代文件

var=`find -name "reg"`
#replace ./ for newline
for file in $var; do 
    #something
done

编辑:使用$ {string#* /}解决它会带走./ 我能用我的想法生存

4 个答案:

答案 0 :(得分:2)

编辑:

我不关心你如何使用命令行或任何适合你的$文件。我更关心你问题的#do something部分,我认为这是一个主要问题,所有发布各种find -name 'reg' | xargs ...的人应该在使OP事项复杂化之前再三思考。

<小时/> 使用sed

var=`find -name "reg"`
#replace ./ for newline
for file in $var; do 
    sed -i 's|\./|\n|g' $file
done

删除-i选项以在屏幕上获取输出,如果获得满意的输出,则使用-i实际更改该线。
在第二次阅读时,也许我正在替换另一种方式,也许你想用./替换换行符?它有点复杂

sed -i ':a;N;$!ba;s|\n|./|g' $file

一如既往,不使用-i选项进行测试,然后决定是否要修改文件 有关第二个sed魔法的解释,请阅读this SO。除了替换字符串的./字符外,它完全相同。

答案 1 :(得分:0)

find -name "reg" | while read file; do ...; done

答案 2 :(得分:0)

while IFS= read -r line; do
  var="${line#./}"
  echo "$var"
done < <(find . -name reg -print)

答案 3 :(得分:0)

好吧我终于解决了它们,我可以删除./
串=。/布拉布拉/ BLA

string = $ {string#* /} #delete stuff,直到第一个/包含

echo $ string #got blabla / bla