Если Вы просто хотите обратиться к тем полям их именами вместо чисел, можно использовать read
:
while read id name age
do
echo "$id $age"
done < file.tsv
Я видел Ваше значение наконец! Вот функция удара, которая распечатает только столбцы, которые Вы указываете на командной строке (по имени).
printColumns ()
{
read names
while read $names; do
for col in $*
do
eval "printf '%s ' \$$col"
done
echo
done
}
Вот то, как можно использовать его с файлом, который Вы представили:
$ < file.tsv printColumns id name
1 ed
2 joe
(Функциональные чтения stdin
. < file.tsv printColumns ...
эквивалентно из printColumns ... < file.tsv
и cat file.tsv | printColumns ...
)
$ < file.tsv printColumns name age
ed 50
joe 70
$ < file.tsv printColumns name age id name name name
ed 50 1 ed ed ed
joe 70 2 joe joe joe
Примечание: Обратите внимание на названия столбцов, которые Вы запрашиваете! Эта версия испытывает недостаток в проверках работоспособности, таким образом, противные вещи могут произойти, если один из аргументов - что-то как "anything; rm /my/precious/file"
Если требуется запустить Emacs в терминале и без графической поддержки X11, просто назовите его с -nw
переключатель командной строки:
emacs -nw #...other options
Можно настроить псевдоним оболочки при выполнении этого часто.
Это работает также в случаях, где Вы не управляете тем, что установлено.
emacs23-nox
. – Riccardo Murri 21.06.2011, 13:29