Переименовать имя файла в цикле

У меня есть цикл, и я хочу выбрать несколько столбцов с помощью awk и выполнить сортировку, а затем переименовать выходной файл с помощью новое имя. Мои awk и сортировка работают хорошо, но я хочу получить имя файла с другим именем моего входного файла, а я не смог этого сделать. У меня есть разные каталоги для запуска этого цикла: a, b и c. Команда:

for i in a b c 
do
    (cd $i/; for i in *_test2.txt; do awk '{print $2"_"$1}' $i | sort -V > ${i%.txt}3.txt; done)
done

Я хотел бы изменить имя файла на * _ test3.txt , но в моем цикле у меня будет вывод как * _ test23.txt Как я могу это сделать?

0
09.02.2017, 18:54
1 ответ

${i%.txt} просто удалит расширение .txt из имени файла $i. Чтобы убрать один лишний символ, используйте ${i%?.txt}:

for i in {a,b,c}/*_test2.txt; do
  awk '{ print $2 "_" $1 }' "$i" | sort -V -o "${i%?.txt}3.txt"
done
0
28.01.2020, 04:48

Теги

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