簡體   English   中英

Shell sed命令

[英]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腳本:讀取文件中的行

只需在應用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"

使用純殼

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

快速而骯臟的awk單線無循環執行此工作:

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/
...

如果要執行cmds:

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

我說它又快又臟,因為:

  • 格式必須為path1:path2
  • 您的路徑不能包含特殊字母(如空格)或:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM