从列表中的字符串中提取所有数字

Len*_*nna 1 awk sed tr

给定一些字符串 's' 我只想从该字符串中提取数字。我希望输出的数字每个都用一个空格分隔。

示例输入 -> 输出

....输入:1,2,3
输出:1 2 3

....输入:1 2 a b c 3
输出:1 2 3

....输入:ab#35jh71 1,2,3 kj$d3kjl23
输出:35 71 1 2 3 3 23

我已经试过的组合grep -o [0-9]grep -v [a-z] -v [A-Z],但问题是,其他字符喜欢-#可以在数字之间使用。不管我需要他们的数字之间的非数字字符数量与一个被替换单一空间。

我也一直在尝试awksed,但有一点运气。

Rav*_*h13 6

根据您显示的示例,不确定预期输出中的空格,请您尝试以下操作。

awk '{gsub(/[^0-9]+/," ")} 1' Input_file
Run Code Online (Sandbox Code Playgroud)

说明:全局替换除数字以外的任何空格。提及1将打印当前行。



如果您想删除输出中的初始/起始空间和结束空间,请尝试以下操作。

awk '{gsub(/[^0-9]+/," ");gsub(/^ +| +$/,"")} 1' Input_file
Run Code Online (Sandbox Code Playgroud)

说明:将当前行中除数字以外的所有内容全局替换为当前行中的空格,然后将当前行中的起始和结束空格全局替换为NULL。提及1将打印已编辑/未编辑的当前行。