Я отвечаю на свой собственный вопрос (с кодом!) и upvoting Keith для его keysym предложения. Однако решение Keith не сохраняет измененный шрифт в файл Xresources, так, чтобы изменение размер было доступно, когда следующее окно открыто, тогда как мое делает:
Я изменил входные файлы на tsv и использовал следующее решение (вдохновленный 1-м ответом)
echo "" > wrong_variables.tmp
while read line
do
var_template=`echo $line | cut -f2`
var_parameter=`echo $line | cut -f3`
#TODO order by template and cache grep output
grep "${var_template}" templ2.tmp | cut -f2 > tmpfile
var_suggest=`tre-agrep -B "$var_parameter" tmpfile | tr "\n" "$"`
echo $line \\t $var_suggest >> wrong_variables.tmp
done < $OUTPUT_RAW
Как острота с результатом:
for pattern in $(awk '{print $3}' wrong.csv) ; do tre-agrep -B $pattern available.csv | tr "\n" "$"; echo ; done
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
"id1" , "text1-1"$"id1" , "text1-2"$"id1" , "text1-3"$"id1" , "text1-4"$"id2" , "text2-1"$"id2" , "text2-2"$"id2" , "text2-3"$"id2" , "text2-4"$
лучше читаемый:
for pattern in $(awk '{print $3}' wrong.csv)
do
tre-agrep -B $pattern available.csv | tr "\n" "$"
echo
done
Что-то как этот?
IFS=''
и используйтеread -r line
постараться не пропускать начальный пробел и интерпретировать обратные косые черты. Всегда подстановки переменных двойной кавычки ("$line"
) сохранять пробел и\[?*
неизменный; и используйтеprintf %s "$line"
вместоecho
. Но на самом деле можно извлечь разделенные от вкладки поля в оболочке:tmp=${line#*␉}; var_template=${tmp%%␉*}; line=${tmp#*␉}; var_parameter=${tmp%%␉*}
где ␉ является вкладкой. Последняя строка в цикле должна бытьprintf '%s\t%s\n' "$line" "$var_suggest"
. – Gilles 'SO- stop being evil' 15.04.2011, 00:04