Я думаю, что это зависит от среды, в которой Вы находите себя. Если Вы *, отклоняют человека, то знание awk
является Хорошей Вещью. Единственная другая среда сценариев, которая может быть найдена на фактически каждом *, отклоняет, sh
. Таким образом, в то время как grep
, sed,
и т.д. может, конечно, заменить awk
на современной господствующей тенденции linux
дистрибутив, когда Вы перемещаетесь в более экзотические системы, знание немного awk
будет Реальным Удобный.
awk
может также использоваться для больше, чем просто обработки текста. Например, один из моих супервизоров пишет код астрономии в awk
- именно так крайне старая школа и , потрясающая , он. Назад в его дни, это был лучший инструмент для задания... и теперь даже при том, что его студенты как я используют Python и что не, он придерживается того, что он знает и работает хорошо.
В закрытии, существует много старого кода, ударяющего во всем мире, знание немного awk
не собирается причинять боль. Это также сделает Вас лучше *, отклоняют человека:-)
многие люди публиковали бы причудливое решение вашей проблемы с помощью регулярных выражений, но я бы предпочел это, даже если это требует ввода всех чисел вручную
int ix = myString.IndexOfAny('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
Попробуйте что-нибудь вроде этого
string s = "XX0234X";
Regex rg = new Regex("\\d+");
Match m = rg.Match(s);
Изменить: найти также разделитель и второе значение в один раз, вы можете использовать такое регулярное выражение.
using System;
using System.Text.RegularExpressions;
class Program {
static void Main(string[] args) {
string[] strings = new string[] {
"XXXX001&042",
"XXXXXXX004-010XXX",
"XX0234X"
};
Regex regex = new Regex(@"(?<first>\d+)((?<separator>[-&])(?<second>\d+))?");
foreach (string s in strings){
Match match = regex.Match(s);
Console.WriteLine("First value: {0}",match.Groups["first"].Value);
if (match.Groups["separator"].Success) {
Console.WriteLine("Separator: {0}", match.Groups["separator"].Value);
Console.WriteLine("Second value: {0}", match.Groups["second"].Value);
}
}
}
}