2017-06-07 23 views
0

我是sed的新手,你能告訴我以下幾點嗎?我無法從下面的命令中找到完整的正則表達式。瞭解一個Sed腳本如何分解成單個命令

sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt

難道我們有3個命令在一起嗎?

:a;N;$!ba;s

>[[:space:]]*\n

>\\\n/g

,或者說我正確intrepreting命令。

回答

2

的命令的劃分是:

  • :a;N;$!ba,這是用於讀取整個輸入文件到圖案空間中的常見的成語(緩衝操作上)一次,在一個循環;它由3 - 分隔;命令:

    • 標籤:a(定義了可以跳轉到的腳本位置)
    • 功能N(讀取下一行,並將其追加到圖案空間)
    • $! ba,分支(b)標記a其中,如果輸入線不是(!)的最後$)之一。
  • s/>[[:space:]]*\n/>\\\n/g是在形式s/<regex>/<substitution-string>/常規s函數調用;在這裏,所有出現的>後跟任何一個空格後跟一個換行符都會被替換爲>\和一個換行符。