Как просмотреть все CSV-файлы в каталоге, выбрать диапазон столбцов и объединить их в один CSV-файл?

Было бы более эффективно использовать сравнение строк вbash:

if [[ $PWD != *$old* ]]; then

предполагая, что $oldимеет какое-то значение (оно не установлено в вашей функции, что является вашей проблемой ).

Думаю, частичная реализация вашей функции могла бы выглядеть так

cd () {
    if [[ $PWD != *$1* ]]; then
        printf 'cd: string not in pwd: %s\n' "$1"
        return 1
    fi
    builtin cd "${PWD/$1/$2}"
}

(заимствование сообщения об ошибке из zsh, который имеет ту же функцию cd, встроенную в)

Однако эта функция не позволяет пользователю передавать какие-либо другие аргументы в cd. Чтобы обрабатывать параметры, вам нужно будет выполнить полный разбор командной строки.

Игнорирование параметров:

cd () {
    if [[ $# -lt 2 ]]; then
        builtin cd "$@"
        return
    fi

    if [[ $PWD != *$1* ]]; then
        printf 'cd: string not in pwd: %s\n' "$1"
        return 1
    fi
    builtin cd "${PWD/$1/$2}"
}
0
04.10.2021, 21:44
1 ответ

Если ваша система/ограничения позволяют это, рассмотрите возможность использования специального инструмента CSV -. Мне нравится (, и теперь я поддерживаю форк)GoCSV .

Его подкоманда select имеет синтаксис и функцию, очень похожую на cut:

for file in *.csv; do 
  gocsv select -c 1-40 $file > processed_$file
done

, а затем вы можете «сложить» все вырезанные -обработанные файлы CSV вместе:

gocsv stack processed_*.csv > combined.csv

Поскольку GoCSV знает о формате и заголовках CSV, вы должны получить желаемый результат всего за несколько строк оболочки.

стек также имеет опцию-имен файлов , которая добавляет имя файла в специальный столбец группировки,так что вы можете ссылаться на любую строку обратно в исходный файл (и красиво -печатать с viewmd):

gocsv stack --filenames processed_*.csv | gocsv viewmd

| foo | File                |
|-----|---------------------|
| 1   | processed_file1.csv |
| 2   | processed_file1.csv |
| 3   | processed_file2.csv |
| 4   | processed_file2.csv |
0
21.10.2021, 22:46

Теги

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