Вполне возможно, что ваш xterm прокручивает слишком много данных, когда вы пытаетесь его остановить. В тот момент, когда вы нажимаете «CTRL+C», процесс останавливается, но вывод, который был буферизован, по-прежнему будет поступать на вашу консоль.
Задержка — это ваш X (, в данном случае xterm ), отображающий информацию.
Прежде всего, избегайте разбора текста -с помощью циклов оболочки . Это трудно сделать, легко ошибиться и очень трудно читать. И медленно. Очень, очень, медленно. Вместо этого используйте что-то вроде awk
, которое специально разработано для чтения по «полям». Например, с этим входным файлом:
foo, bar, baz
oof, rab, zab
Вы можете прочитать каждое поле, разделенное запятой -, используя awk -F,
, чтобы установить разделитель полей на,
:
$ awk -F, '{ print "The 1st field is",$1,"the 2nd", $2,"and the 3rd", $3}' file
The 1st field is foo the 2nd bar and the 3rd baz
The 1st field is oof the 2nd rab and the 3rd zab
Даже если вы настаиваете на том, чтобы сделать это в оболочке, вам не нужен временный файл, и вам не нужно tr
. Вы можете указать while read
разделять запятыми:
$ while IFS=, read -r one two three; do
echo "The 1st field is $one, the 2nd $two and the 3rd $three";
done < file
The 1st field is foo, the 2nd bar and the 3rd baz
The 1st field is oof, the 2nd rab and the 3rd zab