簡體   English   中英

了解Sed腳本如何分解為單獨的命令

[英]Understanding how a Sed script breaks down into individual commands

我是sed新手,您能告訴我以下內容嗎? 我從下面的命令中找不到完整的正則表達式。

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

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

:a;N;$!ba;s

>[[:space:]]*\\n

>\\\\\\n/g

或者我沒有正確理解命令。

命令的分區為:

  • :a;N;$!ba ,這是一個常見的慣用法,用於將整個輸入文件循環一次讀取到模式空間(要操作的緩沖區)中; 它由3個組成; -分隔的命令:

    • label :a (定義可以跳轉到的腳本位置)
    • 函數N (讀取下一行並將其追加到模式空間)
    • $! ba $! ba ,如果輸入行不是( !最后一行( $ ),則分支( b )以標記a
  • s/>[[:space:]]*\\n/>\\\\\\n/g是形式為s/<regex>/<substitution-string>/的常規s函數調用; 在這里,所有>后面出現的任何空格,再加上換行符的任何運行都被替換為>\\和換行符。

暫無
暫無

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

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