У меня есть очень грубый скрипт getinfo.sh, который получает информацию обо всех файлах с именами FILENAME1 и FILENAME2 во всех подпапках и пути к подпапке.Результат awk должен выбирать n-ю строку из FILENAME2 только в том случае, если скрипт вызывается с "getinfo.sh n" .Я хочу, чтобы вся информация была напечатана в одну строку!
Проблема в том, что если я использую print вместо printf, информация записывается в новую строку, но мой скрипт работает.Если я использую printf, я вижу последний бит команды awk в команде propt после того, как сценарий завершен, но он не передается после команды grep в той же строке.В целом вся линия будет довольно длинной, но это намеренно.Не могли бы вы сказать мне, что я делаю не так?
#!/bin/bash
IFS=$'\n'
while read -r fname ;
do
pushd $(dirname "${fname}") > /dev/null
printf '%q' "${PWD##*/}"
grep 'Search_term ' FILENAME1 | tail -1
awk '{ if(NR==n) printf "%s",$0 }' n=$1 $2 FILENAME2
popd > /dev/null
done < <(find . -type f -name 'FILENAME1')
Я также был бы счастлив, если бы это было проще, если бы это было проще?
РЕШЕНИЕ:
#!/bin/bash
IFS=$'\n'
while read -r fname ;
do
pushd $(dirname "${fname}") > /dev/null
{
printf '%q' "${PWD##*/}"
grep 'Search_term' FILENAME1 | tail -1
} | tr -d '\n'
if [ "$1" -eq "$1" ] 2>/dev/null
then
awk '{ if(NR==n) printf "%s",$0 }' n="$1" FILENAME2
fi
printf "\n"
popd > /dev/null
done < <(find . -type f -name 'FILENAME1')