[英]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.