簡體   English   中英

使用bash或sed或awk從文件的字符串(以特定格式)中提取子字符串

[英]Extract substring from strings (in a particular format) from a file using bash or sed or awk

我有一個輸入文件,其示例如下所示:
(?U0 ?U2 ?U9 ?U11 ?U21)
我想將?U之后的所有數字提取為以下輸出文件:
0 2 9 11 21
在這方面請幫助我,我是新手。

謝謝

您可以使用grep,但每行每行都會產生輸出。

grep -oP '\?U\K\d+' file

要么

$ echo '(?U0 ?U2 ?U9 ?U11 ?U21)' | grep -oP '\?U\K\d+' | paste -s -d " " -
0 2 9 11 21

使用sed,您可以執行以下操作:

s='(?U0 ?U2 ?U9 ?U11 ?U21)'
sed 's/?U\([0-9]\+\)/\1/g; s/[()]//g' <<< "$s"
0 2 9 11 21

簡單sed

echo "(?U0 ?U2 ?U9 ?U11 ?U21)" | sed 's/[()?U]//g'  

產量
0 2 9 11 21

刪除所有不需要的字符,如果需要,您可以在集合中放置其他字符

或更普遍

echo "(?U0 ?U2 ?U9 ?U11 ?U21)" | sed 's/[^0-9 ]*//g'   

刪除所有非數字字符(而不是空格)

使用grep:

out="$(grep -oP '(?<=\?U)\d+' filepath |tr -s '\n' ' ')"
out="${out% }"
echo "$out" >outfilepath

暫無
暫無

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

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