человек xargs говорит, что стандартный вход разграничен пробелами; но это?

$ str="token1;token2;token3;token4"
$ echo $str
token1;token2;token3;token4
$ echo $str | tr ';' ' '
token1 token2 token3 token4
$ arr=( $(echo $str | tr ';' ' ') ) # Populate the tokens into an array
$ echo ${arr[0]}  # Access items by index
token1
$ echo ${arr[2]}
token3
$ echo ${arr[1]}
token2
$ echo ${#arr[@]}  # Length of the array
4
3
16.02.2018, 02:49
3 ответа

Считайте то, что страница руководства говорит об опции -I, который Вы используете:

- Я ул. замены

Случаи замены ул. замены в начальных аргументах с именами, считанными из стандартного входа. Кроме того, закрыл кавычки, пробелы не завершают входные параметры; вместо этого разделитель является символом новой строки.

4
27.01.2020, 21:15
  • 1
    OMG! Это было легко! Я смотрел на неправильные вещи... благодарит ;)... –  Peter.O 19.01.2012, 02:11

Нет, это не о “блоках” по сравнению с “объектами”, это просто смещает терминологию. xargs берет вход, заключенный в кавычки с ' или " и разграниченный пробелами, кроме тех случаев, когда передаются определенные опции.

Некоторые опции изменяются на линию за линией обработку без заключения в кавычки: -I, -L, -i (GNU), -l (GNU). Опция -0 (где доступный), изменяется на разграниченный пустым указателем вход без заключения в кавычки. Опция -d (GNU) изменяется на пользовательский разделитель без заключения в кавычки.

3
27.01.2020, 21:15

Одна из причин того, чтобы сделать Параллель GNU состояла в том, чтобы сделать это более предсказуемым, чем xargs. https://www.gnu.org/software/parallel/history.html

Если Вы поражены по тому, как xargs интерпретирует аргументы, рассмотрите использование Параллели GNU вместо этого.

Можно установить Параллель GNU просто:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

Посмотрите вводные видео для Параллели GNU для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1

-1
27.01.2020, 21:15
  • 1
    Только упомяните Параллель, когда у Вас есть полезный пример, иначе она походит на спам. Вы вставили копией это в несколько ответов сегодня. –  Mikel 10.05.2012, 06:31

Теги

Похожие вопросы