Разница между часами и таймером с высоким разрешением

В этом ответе: C Python Ruby Alternative awk

1. C

Поскольку все языки сценариев уже приняты, я перейду к C. Очень легко получить переменные среды с помощью функции get_env() (см. Документацию библиотеки GNU C). Остальное - это просто манипуляция персонажами

bash-4.3$ cat get_path.c
#include 
#include 
#include 
int main()
{
    char *path = getenv("PATH");
    int length = strlen(path) -1;
    for(int i=0;i<=length;i++){
        if (path[i] == ':')
            path[i] = '\n';
        printf("%c",path[i]);
    }
    printf("\n");
    return 0;
}
bash-4.3$ gcc get_path.c
bash-4.3$ ./a.out 
/home/xieerqi/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
/opt/microchip/xc16/v1.25/bin
/opt/microchip/xc32/v1.40/bin
/opt/microchip/xc8/v1.35/bin
/home/xieerqi/bin
/home/xieerqi/bin/sh

2. Python

Но также и потому, что «почему бы нет», вот альтернативная версия python через аргументы командной строки sys.argv

python -c 'import sys; print "\n".join([d for d in sys.argv[1].split(":")])' "$PATH"

3. Ruby

Ruby не работает с Ubuntu по умолчанию, в отличие от C-компилятора и интерпретатора Python, но если вы когда-нибудь захотите его использовать, решение в Ruby будет следующим:

ruby -ne 'puts $_.split(":")' <<< "$PATH"

Как было предложено 7stud (Большое спасибо!) в документации GNU C Library , это также можно сократить с помощью

ruby -F: -ane 'puts $F' <<<$PATH

и таким образом

ruby -0072 -ne 'puts chomp' <<<$PATH

4. Альтернативный awk

Мы можем использовать функцию split() для разбивки строки, считанной в массив, и использовать цикл for-each для печати каждого элемента в отдельной строке.

awk '{split($0,arr,":"); for(var in arr) print arr[var]}' <<< $PATH
2
задан 8 January 2018 в 00:53

0 ответов

Другие вопросы по тегам:

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