簡體   English   中英

使用sed進行多個子字符串提取

[英]Multiple substring extraction using sed

我有一個像這樣的xml文件:

<http:website/CODE1> <http:website/CODE2> <http:website/CODE3>

哪里:

CODE1是由2個字母,2個數字和2個字母定義的代碼:AA11BB

CODE2是一個詞:東方或西方

CODE3是一個浮點數

我需要提取此代碼以過濾出xml代碼。 我需要使用sed。 我想到了類似的東西(僅提取第一個CODE):

sed 's/[A-Z]\{2\}[0-9]\{2\}[A-Z]\{2\}!//g

為了將第一個RegEx不匹配的所有內容替換為空白。 RegEx是正確的,但是如果我使用“否定”符號,那它將不起作用? 怎么了? 此外,如何將多個替換應用於同一行?

這是一個提示-因為您似乎想自己解決問題:)

sed 's/AAA\(.*\)BBB\(.*\)CCC/\1--\2 /'

會尋找類似的東西

AAAsomethingBBBanotherCCC

並將其更改為

something--another

\\(\\)用於選擇零件,而\\1\\2用於檢索零件

sed -n "
  /east/ s/.*\([A-Z][A-Z][0-9][0-9][A-Z][A-Z]\)>.*\(east\).*\/\([0-9.,]\{1,\}\)>.*/\1 \2 \3/p
  /west/ s/.*\([A-Z][A-Z][0-9][0-9][A-Z][A-Z]\)>.*\(west\).*\/\([0-9.,]\{1,\}\)>.*/\1 \2 \3/p
  " YourFile

假設每行只有1個三元組(如果不是,則結果可能是該行中的值與輸出中的1個三元組的混合)

還包括使用的浮點數。 ou,作為分隔符(取決於環境)

如果您輸入的文本與您的示例相匹配,則一行中的3個標記用空格隔開,並且目標文本位於每個標記的最后一個/和結束>之間,那么它將起作用:

sed 's/<[^>]*\/\([^>]*\)>/\1/g' filename

暫無
暫無

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

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