[英]sed command in UNIX - Unable to understand
我是UNIX的新手,正在瀏覽一個腳本文件並遇到一個摘要。 我試圖分析代碼段。 我讀了一些有關'sed - stream editor'
命令以及sed -e
選項的內容。 我還執行了代碼段,並絕對看到了輸出。 但是我無法理解發生了什么。 以下是代碼段。
ID=101
echo ABCDEFGHIJK KLMJN | \
sed -e "1,\$s/ *$/^\"`echo $ID`\"/" \
>a.txt
輸出為ABCDEFGHIJK KLMJN^"101"
腳本文件中有很多地方使用了sed
命令。 有人可以幫我如何解碼這些片段嗎?
您應該分部分看一下:
sed -e "1,\$s/ *$/^\"`echo $ID`\"/"
| | | |
1 2 3
您只想在特定的行上工作。 對於該示例,從第一行開始,到最后一行結束。 在這種情況下,不需要以這種方式編寫代碼。 所以
sed -e "s/ *$/^\\"$(echo $ID)\\"/"
完全一樣。
這是replace命令。 在這種情況下,請在最后一個非空格和行尾之間替換零個或多個空格。 如果您想了解更多有關此的內容,建議使用regex
。
反引號( ``
)實際上是一種'空殼主義'。 它使外殼程序在替換之前執行命令。 為了更易讀,您應該使用$(echo $ID)
。 之后,將2的正則表達式替換為^"101"
。
之后的結果是ABCDEFGHIJK KLMJN^"101"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.