Awk для исключения строки заголовка

Ошибка #891956

Похоже на вашу проблему под названием:Журналы отчетов об ошибках Debian-#891956 eclipse не запускается -ClassNotFoundException :org.eclipse.core.runtime.adaptor.EclipseStarter .

в этой ошибке предлагалось сделать это:

$ sudo apt-get install --reinstall libequinox-osgi-java

The debug output claimed that the framework has been found, but this was a lie since: /usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar was missing.

Ошибка #898086

Судя по трассировке стека, также есть эта ошибка под названием:Журналы отчетов об ошибках Debian-#898086 Отсутствует символическая ссылка jar org.eclipse.osgi .

=== Log file ===
This is the log file:
!SESSION Fri Jun 15 09:10:34 CEST 2018
-----------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2018-06-15 09:10:34.504
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.ClassNotFoundException:
org.eclipse.core.runtime.adaptor.EclipseStarter
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:626)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
=== End of log file ===

Это похоже на вашу проблему. Эта конкретная ошибка все еще активна и не имеет решения или обходного пути.

1
04.08.2020, 10:13
4 ответа

Работая над предложением, которое pLumo дал в комментарии и сделав его немного более гибким, вы можете изменить команду AWK на:

awk 'NR==1 {h=$0; next} {print $NF,$0; if ($NF>m) m=$NF} END {print (m+1),h}'

Идея состоит в том, чтобы гарантировать, что перед заголовком будет стоять большее число, чем в любой другой строке, записывая максимальное значение по всем входным данным и выводя заголовок только после обработки последней строки.

В качестве альтернативы, если ваша система поддерживает ссылки файлового дескриптора типа /dev/fd/n, вы можете продублировать стандартный вывод всего конвейера и позволить awkпечатать строку заголовка в новый файловый дескриптор, предотвращая ее прохождение через последующие команды:

sed "s/['()]//g;s/,/:/g;s/\([0-9]\)L[ ]*$/\1/g;" |
  { awk 'NR == 1 {print >("/dev/fd/3"); next} {print $NF,$0}' |
  sort -nr |
  cut -f2- -d' '; } 3>&1
0
18.03.2021, 23:15

Вам никогда не понадобится sed при использовании awk:

$ awk -F"[',: ]+" -v OFS=' : ' '{print (NR>1) "\t" (NR==1 ? $1 OFS $2 : $3 OFS $4+0)}' file |
    sort -k1,1n -k4,4nr | cut -f2-
Course : StudentCount
MCA_34 : 15
BBM_02 : 14
MBA_23 : 13
BBA_26 : 3
BCA_27 : 2
1
18.03.2021, 23:15

Предварительно обработайте входные данные, хранящиеся в файле с именем file, с помощью sed, а затем обработайте подстановку вывода sed для команд head-n-sort.

{ head -n 1; sort -k3,3nr -k1,1; }  < <(< file sed -Ee "y/(;',)/ ; : /;s/\s+//g;1!s/L$//;s/:/ & /")
Course : StudentCount
MCA_34 : 15
BBM_02 : 14
MBA_23 : 13
BBA_26 : 3
BCA_27 : 2
0
18.03.2021, 23:15

Сделано с помощью сценариев sed:

sed  -e '1d' -e  '2,$s/[^A-Z_0-9]/ /g' -r  -e 's/\s+/;/g' -e 's/^;//g'  -e 's/[A-Z];$//g' filename

выход

BCA_27;2
MCA_34;15
BBA_26;3
BBM_02;14
MBA_23;13
0
18.03.2021, 23:15

Теги

Похожие вопросы