[英]What is this command doing? sed
我得到了一組通用命令,這些示例將作為我必須執行的操作的示例:
1 cat /etc/dsh/machines.list | sed -e "s|\(.*\)|sshfs \1:/opt/dextor/cloud \1|"
2 cat /etc/dsh/machines.list | sed -e "s|\(.*\)|sshfs \1:/opt/dextor/cloud \1|" | sh
3 cat /etc/dsh/machines.list | sed -e "s|\(.*\)|cp run.sh \1/|"
4 cat /etc/dsh/machines.list | sed -e "s|\(.*\)|cp run.sh \1/|" | sh
這到底在做什么?
我了解到machine.list的內容正在傳遞給sed,但是sed命令在做什么?
謝謝!
我將解釋cat /etc/dsh/machines.list | sed -e "s|\\(.*\\)|cp run.sh \\1/|"
cat /etc/dsh/machines.list | sed -e "s|\\(.*\\)|cp run.sh \\1/|"
對你來說,休息都一樣。
1) cat
將讀取來自machines.list
行並將其傳遞給sed。
2)sed基本上是進行match and replace
操作。
|
用作分隔符,可以是任何字符,通常是/
。 基本上是這樣|match this|replace with this|
。
您正在匹配\\(.*\\)
,這基本上是告訴sed匹配所有符合條件的行。 .
匹配每個字符, *
表示可以多次匹配該字符。 使用()
會將匹配項保存在\\1
。
在替換部分中,您將其替換為文本cp run.sh \\1/
和\\1
將包含匹配的內容。
我也認為根本不需要使用cat
。 最好以這種方式使用它sed -e "s|\\(.*\\)|cp run.sh \\1/|" /etc/dsh/machines.list
sed -e "s|\\(.*\\)|cp run.sh \\1/|" /etc/dsh/machines.list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.