Так что мне нужно пройти через некоторые java-файлы и вытащить авторов после каждого тега @author. Я начал смотреть на awk, но awk не смог удалить незапланированные части, и поэтому я наткнулся на this.
Что я бегу
perl -n -e'/author (.*)/ && print $1' *.java
Это ничего не печатает. Если я сделаю
perl -n -e'/author (.*)/ && print $_' *.java
будет (правильно) распечатать всю строку.
Я могу сделать это, и он выполняет мою цель, но я все еще хочу знать, почему моя группа захвата не работает.
perl -n -e"/\@author/&& print $'" *.java
Пример ввода:
/* HelloWorld.java
* @author Partner of Winning
* @author Robert LastName
*/
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Большое спасибо за любую помощь.
Единственное отличие состоит в том, что '$ _' заканчивается символом новой строки, а' $ 1' - нет. Может быть, добавление '-l' в опции поможет? –
Когда вы говорите «Это ничего не печатает», вы имеете в виду, что на самом деле ничего не печатает? Потому что это работает для меня. Или вы имели в виду, что вы получаете ошибку или что-то еще, что не «ничего». – TLP
@ Джонатан: Это действительно работало. Посмотрел '-l', кажется, просто добавляет новую строку. Пробовал просто поставить новую строку в заявлении печати, и это сработало. – mtfurlan