Почему не пропускает? Вывод соответствует заданию, все слова с любыми символами пишутся в файл. Кроме тех что состоят только из букв.
public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader(args[0]);
        BufferedReader reader = new BufferedReader(fr);
        FileWriter fw = new FileWriter(args[1]);
        BufferedWriter writer = new BufferedWriter(fw);
        while (reader.ready()){
            String line = reader.readLine().replaceAll("\\b[^0-9, ]+\\b", "");
            writer.write(line);
                }

        fr.close();
        reader.close();
        writer.close();
        fw.close();

    }
Такой вариант тоже не пропускает:
public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader(args[0]);
        BufferedReader reader = new BufferedReader(fr);
        List<String> list = new ArrayList<>();
        StringBuilder newLine = new StringBuilder("");
        FileWriter fw = new FileWriter(args[1]);
        BufferedWriter writer = new BufferedWriter(fw);
        while (reader.ready()){
          String[] str = reader.readLine().split(" ");
            Pattern p = Pattern.compile(".*\\d+.*");

            for(String s: str){
                Matcher m = p.matcher(s);
                if(m.find()){
                  newLine = new StringBuilder().append(newLine).append(s).append(" ");
                }
            }
            list.add(newLine.toString());
       }
        fr.close();
        reader.close();

        FileWriter fw = new FileWriter(args[1]);
        BufferedWriter writer = new BufferedWriter(fw);
        for (int i = 0; i<list.size(); i++){

                writer.write(list.get(i).trim());

        }
        writer.close();
        fw.close();

    }