Нет необходимости делать это так, просто awk читает два файла, это нормально:
awk -F, 'NR==FNR{a[$1]++;next;}a[$1]{$5="Y"}1' file1.csv file2.csv
Не уверены, что заголовок и вторая строка - это ваш способ объяснения, если вы хотите избавиться от них :
awk -F, 'NR==FNR{a[$1]++;next;}a[$1]{$5="Y"}FNR>2' file1.csv file2.csv
Обратите внимание, что если file1.csv может быть пустым, вы должны изменить NR==FNR
на другие методы проверки файлов, такие как ARGIND==1
для GNU awk, или FILENAME=="file1.csv"
и т. Д.
a[$1]++
на a[$1]=1
немного улучшит скорость. a
, когда FNR>1
или FNR>2
. Усовершенствуйте команду самостоятельно, я уверен, что вы поняли;)
NR==FNR
означает первый файл, потому что NR
означает N число от R записей теперь FNR
означает текущий F иле N номер R экордов.
a
- это массив для сохранения $1
в качестве ключей.
next
пропустить выполнение другого блока.
Когда NR==FNR
равно false, это означает, что это не первый файл, первый блок не будет выполнен.
(Вы также можете использовать NR>FNR
перед блоком, чтобы указать его, но так как я использовал next
в блоке NR==FNR
, так что в этом нет необходимости.)
Затем запускаются другие директивы, a[$1]
заключается в том, чтобы судить, существует ли ключ в массиве a
или нет (если обратиться к значению, буквально проверьте, что key exists
фактически должно быть $1 in a
), если он существует, то измените $ 5.
Последний 1
должен указывать истинное значение, это сокращение для {print}
.
(Поскольку выражение без блока подразумевает {print}
, и блок выполняется, когда вышеприведенное выражение рассчитывается как true
, для которого 1
всегда верно.)
Сегодня IronRuby уже 'выполняет' направляющие. Мы demo'd это рабочие направляющие назад в RailsConf 08. Тем не менее у нас есть большая работа качества сборки и отделки, чтобы сделать на IronRuby для получения его к состоянию, куда это может выполнить направляющие хорошо.
Где нам недостает, прямо сейчас:
Мы на самом деле делаем прекрасный на пропускной способности - после того как мы - скомпилированные вещи, выполненные обоснованно хорошо.
Мы двигаем адаптивную стратегию компиляции, где мы интерпретируем по умолчанию и компилируем горячие точки, которые мы находим. Это заставит разработчика испытать намного лучше. Мы будем также иметь заранее режим компиляции (возможно, в сочетании с NGEN и интеллектуальным кэшированием) в будущем, который может быть лучше, чем адаптивная стратегия компиляции.
Извините, что разочаровал, но я думаю, что необходимо будет записать учебное руководство сами. Если я не пропустил что-то, IronRuby еще не выполняет направляющие, хотя они продемонстрировали некоторое выполнение аспектов.
Согласно домашней странице IronRuby они приблизительно в 71%, завершенном на пакете ядра RubySpecs, который является, вероятно, все еще некоторым путем от достаточно для движения от rails <projectName
прямо до ironruby script/server
Когда IR выполняет направляющие, я думаю, что мы можем услышать об этом. Или скорее нам, вероятно, придется закрыть нас в камерах изоляции, чтобы не слышать об этом...
Вот несколько хорошие "пошаговые" для новичков: http://www.ironruby.net/Samples_and_tutorials