Обрезать последние 3 символа строки БЕЗ использования sed, perl и т. Д. - PullRequest
38 голосов
/ 24 июля 2010

У меня есть сценарий оболочки, выводящий данные, подобные этому:

1234567890  *
1234567891  *

Мне нужно просто удалить последние три символа "*".Я знаю, что могу сделать это через

(whatever) | sed 's/\(.*\).../\1/'

Но я не хочу использовать sed для скорости.Это будут всегда те же самые последние 3 символа.

Какой-нибудь быстрый способ очистить вывод?

Ответы [ 12 ]

0 голосов
/ 24 июля 2010

что вы имеете в виду не хотите использовать sed / awk для скорости?sed / awk работают быстрее, чем оболочка во время цикла чтения для обработки файлов.

$ sed 's/[ \t]*\*$//' file
1234567890
1234567891

$ sed 's/..\*$//' file
1234567890
1234567891

с оболочкой bash

while read -r a b
do
 echo $a
done <file
0 голосов
/ 24 июля 2010

Вы можете использовать awk просто для печати первого «поля», если не будет пробелов (или, если будет, измените разделитель ».

Я поместил поля, которые вы имели выше, вфайл и сделал это

awk '{ print $1 }' < test.txt 
1234567890
1234567891

Я не знаю, лучше ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...