Я нашел эту страницу после выполнения некоторых упражнений с образцами и с тем же самым загадкой.
============== Я перешел от этого кода в качестве примера ===============
public static void main(String[] args) throws IOException {
Map wordMap = new HashMap();
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
countWord(wordMap, args[i]);
}
} else {
getWordFrequency(System.in, wordMap);
}
for (Iterator i = wordMap.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
System.out.println(entry.getKey() + " :\t" + entry.getValue());
}
====================== Этот код ========================
public static void main(String[] args) throws IOException {
// replace with TreeMap to get them sorted by name
Map<String, Integer> wordMap = new HashMap<String, Integer>();
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
countWord(wordMap, args[i]);
}
} else {
getWordFrequency(System.in, wordMap);
}
for (Iterator<Entry<String, Integer>> i = wordMap.entrySet().iterator(); i.hasNext();) {
Entry<String, Integer> entry = i.next();
System.out.println(entry.getKey() + " :\t" + entry.getValue());
}
}
================ ================================================== =============
Это может быть безопаснее, но потребовалось 4 часа, чтобы одурачить философию ...
Попробуйте
awk --re-interval -F '[[:blank:]]{1,}' '{printf ("%s ", $2)}' list
--re-interval
Разрешить интервальные выражения (см. Операторы Regexp) в регулярных выражениях. Это поведение gawk по умолчанию. Тем не менее, эта опция остается как для обратной совместимости, так и для использования в сочетании с опцией
blockquote>--traditional
.
Вы используете Gawk, который находится до фиксации в ноябре 2010 года, найденный git bisect
.
http://git.savannah.gnu.org/cgit/gawk.git / commit /? id = 40b3741f63c19e38077d57f4ce4737916ec5073e
Изменение действительно зависит от поведения по умолчанию относительно интервалов, которые становятся по умолчанию (как это требует POSIX).
Похоже, что опция --re-interval
отменяется только для использования с --traditional
; т.е. если функция --traditional
включена, поддержка {m,n}
исчезает, но может быть выборочно возвращена с помощью --re-interval
.
В вашей версии {m,n}
непризнан по умолчанию, с помощью или без --traditional
. Это верно до этой фиксации:
commit 00ef0423acd97cb964a2bae54c93a03a8ab50e5e
Author: Arnold D. Robbins <arnold@******>
Date: Fri Jul 16 14:55:10 2010 +0300
Move to 3.1.8.
, и вы все еще находитесь на 3.1.5.
{
не является особым в регулярном выражении. POSIX говорит, что все awk-регулярные выражения представляют собой расширенные регулярные выражения (ERE), в которых {
является живым. Итак, GNU Awk пытается удовлетворить оба требования каким-то образом комбинацией значений по умолчанию, переопределяемых с опциями.
– Kaz
7 December 2013 в 08:02
--posix
также может работать.gnu awk
не работает по умолчанию сinterval expression
, вам нужно сказать ему об этом. – Jotne 5 December 2013 в 09:46interval expression
вfield separator
. – Jotne 5 December 2013 в 09:57