LINUX.ORG.RU
ФорумTalks

Bash


0

0

есть следующий текст

9 3 5 6
5 6 1
8 0

надо чтобы получилось
9 3 5
5 6
8
как средствами баша это реализовать?

anonymous

Ответ на: комментарий от musha-route

смысл не в этом, надо чтобы в каждой строке удалялся последний символ

anonymous
()
Ответ на: комментарий от Quasar

поподробней пожалуйста если можно)

anonymous
()
Ответ на: комментарий от fdm

а если чистым башем, то разве что так:

echo "1 2 3 4" | while read l; do echo "${l% *}"; done

fdm
()
Ответ на: комментарий от anonymous

> предлагаешь в конвейер еще два tac-а запихнуть?

А при чём тут tac? В данной задаче нам требуется отрезать 2 последних символа в каждой строке, а это отлично умеет делать cut.

anonymous
()
Ответ на: комментарий от anonymous

> А при чём тут tac? В данной задаче нам требуется отрезать 2 последних символа в каждой строке, а это отлично умеет делать cut.

тыкнике в строчку мана, я им умею, отрезать только, когда отсчет ведется с начала, а длину строки в конвейере узнать не так уж и просто

anonymous
()

#! /bin/sh

delete-last-char() {
    # for dummyes:
    # read(builtin) performs field splitting
    # according to $IFS.
    # that's why we don't need to strip
    # trailing space

    while read str; do 
	echo ${str%?} # omit last non-blank char
    done
}

# test case
echo "
9 3 5 6
5 6 1
8 0
" |
delete-last-char

anonymous
()
Ответ на: комментарий от pierre

>> как средствами баша это реализовать?

> man cut

пруф?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.