РЕДАКТИРОВАТЬ: Согласно комментариям @kent и @tripleee sir, я забочусь о нескольких экземплярах в одной строке суммы строк +, если кто-то awk
НЕ поддерживает nextfile
Я создаю флаг типа no_processing
, который будет просто пропускать строки, если он TRUE (после просмотра 2 экземпляров строки в любом файле).
awk 'FNR==1{count=0;no_processing=""} no_processing{next} {count+=gsub("Numero de expediente","")} count==2{print FILENAME;no_processing=1}' *.txt
ИЛИ (форма решения не с одним вкладышем)
awk '
FNR==1{
count=0
no_processing=""
}
no_processing{
next
}
{
count+=gsub("Numero de expediente","")
}
count==2{
print FILENAME
no_processing=1
}
' *.txt
Не могли бы вы попробовать следующее, следует работать с GNU awk
.
awk 'FNR==1{count=0} /Numero de expediente/{count++} count==2{print FILENAME " has at least 2 instances of searched string in it.";nextfile}' *.txt
Выше будет напечатано, например, -> test.txt has at least 2 instances of string in it.
Если вы хотите просто напечатать имена файлов, попробуйте выполнить следующее.
awk 'FNR==1{count=0} /Numero de expediente/{count++} count==2{print FILENAME;nextfile}' *.txt
Объяснение: Добавление пояснения к приведенному выше коду сейчас.
awk ' ##Starting awk program here.
FNR==1{ ##Checking condition FNR==1 which will check if this is a 1st line for any new Input_file(since we are reading multiple Input_files from awk in this code).
count=0 ##Setting value of variable count as ZERO here.
} ##Closing BLOCK for FNR condition here.
/Numero de expediente/{ ##Checking condition here if a line contains string Numero de expediente in it then do following.
count++ ##Incrementing variable named count value with 1 here.
} ##Closing BLOCK for string checking condition here.
count==2{ ##Checking condition if variable count value is 2 then do following.
print FILENAME ##Printing Input_file name here, where FILENAME is out of the box awk variable contains current Input_file name in it.
nextfile ##nextfile will skip current Input_file, since we got 2 instances so need NOT to read this Input_file as per OP requirement and SAVE some time here.
} ##Closing BLOCK for count condition here.
' *.txt ##Mentioning *.txt which will pass all .txt extension files to it.
Java часто используется в бэкэнде (и стал стандартом де-факто) по ряду причин:
В C # есть отличные инструменты и библиотеки для разработки пользовательских интерфейсов в Windows. Ява'
Ну, во многих случаях .NET используется на обоих концах (и я бы предположил, что то же самое для Java). Но я предполагаю, что мотивация Java-сервера / .NET-клиента заключается в том, что приложение ориентировано на Unix в качестве серверной ОС, либо по соображениям стоимости или надежности, либо потому, что оно должно вписываться в существующую среду сервера Unix (например, работающее тесно связан с существующими приложениями Unix), но ориентирован на Windows в качестве клиентской платформы. (Я думаю, что Java, вероятно, встречается гораздо реже, когда Windows также используется в качестве серверной платформы; хотя нет никаких подтверждений этому.)
Если предполагается ОС Unix-сервера, то Java - очень продуктивный выбор, хорошо поддерживаемый с большим количеством библиотек, но с большей базой разработчиков (по крайней мере, в «корпоративных» средах) и большим «управленческим» распознаванием, чем альтернативы, такие как Perl, Ruby или Python.
И наоборот, .NET лучше подходит для клиента Windows, потому что он имеет гораздо лучшую поддержку для создания Windows GUI. Это не просто инструмент: сами API-интерфейсы Java GUI (например, Swing), как правило, предпочитают кросс-платформенное сходство, а не внешний вид и поведение, и поэтому приводят к тому, что приложения не выглядят или ведут себя как приложения Windows. (Я немного обобщаю здесь - извините!)
Что касается Java, то две вещи
Форматы обмена данными, такие как JSON, делают гораздо менее важным, чтобы системы по обе стороны соединения были одинаковыми технологиями низкого уровня.
Java - это очень хорошо протестированный и поддерживаемый язык для серверов, в то время как C # имеет отличные инструменты для создания GUI.
Most servers are either Windows or *nix based. So at the server, either Java or .NET/C# (via mono on *nix) would be perfectly good.
Java has better support for different client devices, but in many ways that requirement is being replaces by the much better HTML support at most clients - at least for online devices.
For a installed client application, then arguably Java has the better portability - but with things like Compact Framework, Micro Framework, Silverlight, etc .NET is catching up.
Personally (due to job role), I care mainly what is at the server; .NET/C# has never let me down - but I'm not a Java developer, so I can't contrast directly. From work on open source projects I know there is a good community of people out there using mono on the server.
At the client, tools like WPF offer a first rate GUI experience, with .NET's support for winforms being useful for regular windows apps. But since a lot of the WPF architectureis common with Silverlight (with Moonlight as the mono twin for *nix etc), this allows the experience to be used on non-Windows clients too.
Java is considered more mature, which is a good attribute for a server, whereas C# has better integration with/similar look and feel to windows and office (which the clients like)
Fortyrunner, я не видел ни одного эталона, где JVM с горячей точкой будет побеждать MS CLR.
На стороне сервера Java доказала свою надежность и масштабируемость и доступна на платформах, о которых .NET может только мечтать. Следовательно, если вам нужен самый широкий выбор аппаратного обеспечения, Java является отличным выбором - сюда входят очень большие машины с множеством процессоров, а также множество кластерных дешевых коробок x86.
Если у вас есть .NET на стороне сервера, вы должны использовать Windows, а Windows просто плохо масштабируется с точки зрения аппаратного обеспечения.