[英]how to extract the string from two delimiter strings using sed or awk or bash?
[英]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.