Спасибо за ответы. Вот мой сценарий. Я создал его методом проб и ошибок, который не часто приводит к рабочему решению, и у меня нет систематического способа придумать сценарий, к которому я всегда стремлюсь. Пожалуйста, предоставьте обзор кода, если можете. Спасибо.
Скрипт работает в следующих примерах (не уверен, работает ли вообще):
$ projection -d ":" /etc/passwd 4 3 6 7
$ projection -d "/" /etc/passwd 4 3 6 7
Сценарий projection
равен:
#! /bin/bash
# default arg value
delim="," # CSV by default
# Parse flagged arguments:
while getopts "td:" flag
do
case $flag in
d) delim=$OPTARG;;
t) delim="\t";;
?) exit;;
esac
done
# Delete the flagged arguments:
shift $(($OPTIND -1))
inputfile="$1"
shift 1
fs=("$@")
# prepend "$" to each field number
fields=()
for f in "${fs[@]}"; do
fields+=(\$"$f")
done
awk -F"$delim" "{ print $(join_by.sh " \"$delim\" " "${fields[@]}") }" "$inputfile"
где join_by.sh
это
#! /bin/bash
# https://stackoverflow.com/questions/1527049/join-elements-of-an-array
# https://stackoverflow.com/a/2317171/
# get the separator:
d="$1";
shift;
# interpolate other parameters by teh separator
# by treating the first parameter specially
echo -n "$1";
shift;
printf "%s" "${@/#/$d}";
Как оказалось, командирский лайнер -— это именно то, что мне было нужно, и он работал все это время. Сначала я не понял, что выходной/резервный файл на самом деле является скрытым файлом. Не был уверен, что это формат. Я не указывал каталог в терминале, а вместо этого смотрел только в графическом интерфейсе и не включал просмотр скрытых файлов. Как только я запустил ls -l, я увидел, что файлы были там все это время.
-rw-rw-r-- 1 mike mike 140302 Jan 11 2020 test.JPG
-rw-rw-r-- 1 mike mike 140302 Jan 11 2020 test.JPG.~1~
-rw-rw-r-- 1 mike mike 140302 Jan 11 2020 test.JPG.~2~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt.~1~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:32 test.txt.~2~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt.~3~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt.~4~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:43 test.txt.~5~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:43 test.txt.~6~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt.~7~
-rw-rw-r-- 1 mike mike 0 Aug 15 02:34 test.txt.~8~