Вы специально просили cat
решение, но вот как zsh
можно добиться того же конечного результата, не вызывая никаких реальных команд.
% <test1 <test2 >>random
%
Вот и мы:
# Save the filename
filen="test.txt"
# Save the column name
col_name="$(head -n1 $filen|awk '{print $1}')"
# Save the target word
to_find="abc123"
echo "$col_name: $to_find" ; for name in $(grep $to_find $filen | awk '{print $4}'); do echo " $name"; done
Пример текста:
User ColumnA ColumnB ComumnC
abc123 hi hello howdy?
xyz123 Namaste que paso rowdy?
abc123 hi hello bowdy?
Выход:
User: abc123
howdy?
bowdy?
Используйтеawk
:
awk -F'\t' '
NR>1{
if(!o[$1]) {o[$1]="User: "$1"\n\t"$4}
else {o[$1]=o[$1]"\n\t"$4}
}
END { for (i in o) print o[i] }
' file
Выход:
User:abc123
howdy?
bowdy?
User:xyz123
howdy?