/****************************************************************************** * This program re-orders columns of tab-delimited input stream. * * Copyright © 2017 Richard Lesh. All rights reserved. *****************************************************************************/ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; import org.pureprogrammer.Utils; public class ReorderColumns { static void printColumns(String line, final List columns) { final List fields = Arrays.asList(Pattern.compile("\\t").split(line)); for (int i = 0; i < columns.size(); ++i) { if (i > 0) { System.out.print("\t"); } if (columns.get(i) > 0 && columns.get(i) <= fields.size()) { System.out.print(fields.get(columns.get(i) - 1)); } } System.out.println(); } public static void main(String[] args) { if (args.length < 1) { System.out.println(Utils.join("", "Syntax: ", "ReorderColumns", " columNum...")); System.exit(1); } List colNums = new ArrayList<>(); for (int i = 1; i <= args.length; ++i) { colNums.add(Utils.stoiWithDefault(args[i - 1], 0)); } String line; while ((line = Utils.getline()) != null) { printColumns(line, colNums); } } }