На самом деле вам не хотелось бы анализировать данные в самой оболочке, а использовать такой инструмент, как awk
, который сделает это за вас.
awk -F '[[:blank:]|]+' '$1 > 20 { print $2 }' file
Это предписывает awk
рассматривать каждую строку файла как набор полей, разделенных любым числом вертикальной черты -символов или пробелов (пробелов или табуляции ). Когда первое поле больше 20, печатается второе поле.
Связанные:
Если второй столбец содержит пробелы, вы можете использовать [[:blank:]]*[|][[:blank:]]*
в качестве разделителя:
awk -F '[[:blank:]]*[|][[:blank:]]*' '$1 > 20 { print $2 }' file
[|]
соответствует буквальному символу вертикальной черты,и может быть заменен на \\|
(, если вам нравится обратная косая черта ).
Далее выполняется сценарий с каждым экземпляром второго столбца, чей первый столбец больше 20, в качестве аргумента командной строки:
awk -F '[[:blank:]]*[|][[:blank:]]*' '$1 > 20 { print $2 }' file |
xargs -I XX./script.sh XX
С чем-то вроде -P 4
в качестве опции к xargs
вы можете запустить несколько параллельных экземпляров вашего скрипта одновременно (четыре с-P 4
).