簡體   English   中英

UNIX中的sed命令-無法理解

[英]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
  1. 您只想在特定的行上工作。 對於該示例,從第一行開始,到最后一行結束。 在這種情況下,不需要以這種方式編寫代碼。 所以

     sed -e "s/ *$/^\\"$(echo $ID)\\"/" 

    完全一樣。

  2. 這是replace命令。 在這種情況下,請在最后一個非空格和行尾之間替換零個或多個空格。 如果您想了解更多有關此的內容,建議使用regex

  3. 反引號( `` )實際上是一種'空殼主義'。 它使外殼程序在替換之前執行命令。 為了更易讀,您應該使用$(echo $ID) 之后,將2的正則表達式替換為^"101"

之后的結果是ABCDEFGHIJK KLMJN^"101"

暫無
暫無

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

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