удаление цифр из конца строк в текстовом файле

set - это встроенная оболочка , используемая для установки и снятия параметров оболочки и позиционных параметров.

Без аргументов set будет печатать все переменные оболочки (как переменные среды, так и переменные в текущем сеансе), отсортированные в текущей локали .

Вы также можете прочитать документацию по bash .


Есть несколько предостережений.

set "$ var" присвоит значение var $ 1 . Если $ var начинается с - или + , тогда содержимое $ var обрабатывается как последовательности параметров оболочки. Если $ var содержат недопустимые параметры, большинство оболочек POSIX выводят ошибку. yash и zsh в эмуляции sh , ksh не только выводят ошибку, но и задают допустимые параметры. В то время как yash прекращает установку параметров для первого недопустимого параметра, zsh назначит их все. В yash :

var=-fxd; set "$var"

f и x будут присутствовать в $ - , а:

var=fdx; set "$var"

только f присутствуют в $ - . В обоих случаях f и x будут представлены в $ - с zsh в sh и ksh эмуляция.

Чтобы защитить вас от этой ситуации, вы можете передать - в качестве первого аргумента для установки позиционного параметра, даже если он начинается с - или + :

var=-fdx; set -- "$var"

назначит $ var на $ 1 , независимо от его содержимого.

set - без дополнительных аргументов сбросит все позиционные параметры.

Если первый аргумент - - , поведение не определено. Все известные оболочки POSIX отключат параметры x и v (кроме posh ) и назначат все после - позиционным параметрам:

set -xv - -f

присвоит -f $ 1 . set - также не сбрасывал позиционные параметры. Шили ош тоже так себя ведет. Heirloom sh не отключает параметры v и x .

Единственное исключение оболочки POSIX - yash , которое рассматривает - как первый позиционный параметр:

$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx

Schily sh даже ничего не делает, если - ] присутствует в аргументах:

$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'

s

$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs

0
13.10.2018, 13:31
1 ответ

Вы можете использовать colrmиз util-linux

.
colrm 59 < file
0
28.01.2020, 04:12

Теги

Похожие вопросы