в jquery вы можете использовать:
$(document).ready(function(){/*do stuff here*/});
, который гарантирует, что javascript загружен и dom готов, прежде чем делать ваши вещи.
в прототипе похоже, что это может сработать
document.observe("dom:loaded", function() {/*do stuff here*/});
Если я правильно понимаю вашу проблему ... Я думаю, что это может помочь ..
Если вы не хотите полагаться на библиотеку, чтобы сделать это ... Я думаю, что это может сработать:
<script>
function doIt() {/*do stuff here*/}
</script>
<body onLoad="doIt();"></body>
Предполагается, что слова по одному в строке, а файл уже отсортирован:
uniq filename
Если файл не отсортирован:
sort filename | uniq
Если их нет в каждой строке, и вы не используете не возражайте, чтобы они были по одному в строке:
tr -s [:space:] \\n < filename | sort | uniq
Это не удаляет знаки препинания, так что, возможно, вы захотите:
tr -s [:space:][:punct:] \\n < filename | sort | uniq
Но это удалит дефис из слов, написанных через дефис. "man tr" для дополнительных опций.
ruby -pi.bak -e '$ _. Split (","). Uniq.join (",")' filename
?
Я признаю два вида цитат некрасивы.
Создание уникального списка довольно просто благодаря uniq
, хотя большинство Команды Unix, такие как одна запись в строке вместо списка, разделенного запятыми, поэтому мы должны начать с преобразования его в это:
$ sed 's/, /\n/g' filename | sort | uniq
word1
word2
word3
word4
word5
word6
word7
Более сложная часть - снова поместить это в одну строку с запятыми в качестве разделителей, а не терминаторов. Для этого я использовал однострочник Perl, но если у кого-то есть что-то более идиоматическое, отредактируйте меня. :)
$ sed 's/, /\n/g' filename | sort | uniq | perl -e '@a = <>; chomp @a; print((join ", ", @a), "\n")'
word1, word2, word3, word4, word5, word6, word7
Вот сценарий awk, который оставит каждую строку без изменений, удаляя только повторяющиеся слова:
BEGIN {
FS=", "
}
{
for (i=1; i <= NF; i++)
used[$i] = 1
for (x in used)
printf "%s, ",x
printf "\n"
split("", used)
}
Я думаю, вы захотите заменить пробелы на новые строки, использовать команду uniq , чтобы найти уникальные строки, а затем снова заменить новые строки пробелами.
Я предположил, что вы хотели, чтобы слова были уникальными в одной строке, а не во всем файле. Если это так, то сценарий Perl, приведенный ниже, поможет.
while (<DATA>)
{
chomp;
my %seen = ();
my @words = split(m!,\s*!);
@words = grep { $seen{$_} ? 0 : ($seen{$_} = 1) } @words;
print join(", ", @words), "\n";
}
__DATA__
word1, word2, word3, word2, word4, word5, word3, word6, word7, word3
Если вам нужна уникальность для всего файла, вы можете просто переместить хэш % visible
за пределы while () {}
петля.
И не забывайте параметр -c
для утилиты uniq
, если вы хотите подсчитать слова тоже.