使用7prob542334
我试图仅提取字符串前的数字。
例如:
7
预期产出:
27prob542334
但是当我有
时我遇到了错误27
预期产出:
2
而是获得max=$(ls -LR $ARCHIVE | grep ^prob | sed 's/_.*//' | uniq -c | sort -rn | tr -d ' '| head -n1 | head -c1)
这是我到目前为止的代码:
prob542334_05
Archive是具有存储"7"
等文件的子目录的目录的路径。我删除了下划线并根据它的出现对文件进行了排序。然后我尝试仅提取出现次数"27"
或 private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
//iterate list box items on a thread-pool thread using TPL
Task.Run(() => Play());
}
}
private void Play()
{
//listBox1 is the name of the list box control in my windows forms application
foreach (var listboxItem in listBox1.Items)
{
//check if the checkbox is currently in checked state
if(checkBox1.Checked)
{
//Checkbox is checked so process the listbox item
Console.WriteLine(listboxItem.ToString());
//do other required stuff
}
else
break;
}
}
答案 0 :(得分:3)
bash
参数展开:
${var%%[[:alpha:]]*}
%%
)删除子串,从末尾到第一个字母([[:alpha:]]*
)字符(左起)。示例:强>
$ var='7prob542334'
$ echo "${var%%[[:alpha:]]*}"
7
$ var='27prob542334'
$ echo "${var%%[[:alpha:]]*}"
27
答案 1 :(得分:3)
使用bash
自己的regex
匹配,([[:digit:]]+)(.*)
$ string="7prob542334"
$ [[ $string =~ ([[:digit:]]+)(.*) ]] && num=${BASH_REMATCH[1]}
$ printf "%s\n" "$num"
7
$ string="27prob542334"
$ [[ $string =~ ([[:digit:]]+)(.*) ]] && num=${BASH_REMATCH[1]}
$ printf "%s\n" "$num"
27
答案 2 :(得分:2)
echo 127prob542334 |grep -o '^[0-9]*'
127
echo 17prob542334 |grep -oP '^\d*'
17
答案 3 :(得分:2)
echo 127prob542334 | grep -o -E '[0-9]+' | head -1 | sed -e 's/^0\+//'
OR
echo 127prob542334 | grep -o '^[0-9]*'
答案 4 :(得分:1)
在awk中:
$ echo 127prob542334|awk 'sub(/[^0-9].*/,"") || 1'
127
击:
$ i=127prob542334
$ echo ${i%%[^0-9]*}
127
答案 5 :(得分:1)
使用awk
,您可以使用printf
命令,该命令只接受参数中给出的字符串的小数部分:
echo "127prob542334" | awk '{printf "%d\n",$1}'
答案 6 :(得分:1)
如果Perl是一个选项:
echo 27prob542334 | perl -lne 'print $1 if /^(\d+)/'
输出:
27
答案 7 :(得分:0)
echo '27prob542334' |grep -Po '^\d+'