Shell sed command



我有paths.txt,例如:

pathO1/:pathD1/
pathO2/:pathD2/
...
pathON/:pathDN/

在每个Pathox/?

之后,我如何'sed''插入' *'

脚本是:

while read line
do
    cp $(echo $line | tr ':' ' ')   
done < "paths.txt"

用:

代替
while read line
do
    cp $(echo $line | sed 's/:/* /1')   
done < "paths.txt"

这似乎是您之前提出的类似问题:shell脚本:读取file

中的行

只需在应用tr之前删除其他'*'的技巧:

cp $(echo $line | sed 's/*//1' | tr ':' '* ')
while read line
do
    path=`echo "$line" | sed 's/:/ /g'`
    cmd="cp $path"
    echo $cmd
    eval $cmd        
done < "./paths.txt"

快速而肮脏的尴尬单线无循环来完成工作:

awk -F: '$1="cp "$1' paths.txt

这将输出:

cp /home/Documents/shellscripts/Origen/* /home/Documents/shellscripts/Destino/
cp /home/Documents/shellscripts/Origen2/* /home/Documents/shellscripts/Destino2/
...

如果您希望CMD被执行:

awk -F: '$1="cp "$1' paths.txt|sh

我说了很快&amp;肮脏,因为:

  • 格式必须为 path1:path2
  • 您的路径不能包含特殊字母(例如空间)或:

使用纯shell

while IFS=: read -r p1 p2
do
  cp $p1 "$p2"
done < file

相关内容

  • 没有找到相关文章

最新更新