Похоже, кэш библиотеки (/etc/ld.so.cache ) еще не был обновлен на клиенте. Проверьте вывод ldconfig -p
при следующем возникновении проблемы.
Я не знаю, квалифицируется ли это как "ответ", но это решило мою проблему. Редактируя мои/etc/hosts и заменяя открытый IP внутренним IP-адресом виртуальной машины, все начинает работать правильно. Я предполагаю, что это кругосветка через публичный IP, которая ломается, но я не совсем уверен.
-121--289378-Я не уверен, что sed может выполнять сложные соответствия другим нескольким строкам.
С помощью perl remove all comments:
perl -e '$_=join("",<>);s%/\*.*?\*/%%gs;s%//.*$%%gm;print' SomeFile.java
С помощью perl remove all non-javadoc comments за пределами пар "":
perl -e '$_=join("",<>);s%/\*([^*].*?)?\*/%%gs;s%^([^\"\n\r]*(\"[^\"\n\r]*\"[^\"\n\r]*?)*?)//([^*\n\r].*)?$%$1%gm;print' SomeFile.java
Вот более компактная версия с поиском всех файлов * .java и генерацией файлов .bak:
find . -name '*.java' -print0 | xargs -r -0 perl -n -p -0 -i.bak -e 's%/\*([^*].*?)?\*/%%gs;s%^([^\"\n\r]*(\"[^\"\n\r]*\"[^\"\n\r]*?)*?)//([^*\n\r].*)?$%$1%gm'
Но это приведет к удалению//inside/* * */
Чтобы избежать этого, потребуется более сложный сценарий:
Необходимо заменить/* * */на __temp_comment_ # (заменить # на изменяющийся номер)
, затем заменить ""... на __temp_quote_#
then удалить комментарий
, а затем вернуть __temp_quote_ # и __temp_comment_ # к исходному тексту
Если вы можете быть уверены, что в этой строке будет один открывающий тег и один закрывающий тег, вы можете использовать его в качестве разделителя полей дляawk
:
awk -F "</*Iwanthis>" '(NF > 1){print $2}' yourfile
Это не поможет во многих искусственных случаях. Чтобы быть более строгим, вы можете использоватьsed
:
sed -n 's_.*<Iwanthis>\(.*\)</Iwanthis>.*_\1_p' yourfile
-n
подавляет вывод по умолчанию, поэтому вы просто получаете вывод в соответствующей строке. Я выбрал символ подчеркивания в качестве разделителя для команды s
, чтобы не экранировать косую черту. Команда s
заменит всю строку частью между открывающим и закрывающим тегом (\1
относится к части \(.*\)
)Конечно, вы все еще можете создавать странные случаи, чтобы это не сработало.
Конечно, похоже на XML-файл. Добавьте корневую заметку и используйте синтаксический анализатор XML :
.$ { echo '<r>'; cat file; echo '</r>'; } | xmlstarlet sel -t -v //Iwanthis
6.1.0