Вы можете просто mv
указать файл, как обычно, вам просто нужно заключить имя файла в кавычки и нажать клавишу возврата. Так:
$ ls -b
file\n
$ mv "file
> " file
$ ls -b
file
Это должно сработать для вас, это сработало для меня в прошлом. Это также сработало бы в исходном случае, вам просто нужно было бы вернуть перед именем файла.
Добро пожаловать в Unix StackExchange!
С GNUgrep
:
$ echo 12451 | grep -o. | grep -c 1
2
С GNUawk
:
$ echo 12451 | gawk -v num=1 'BEGIN { FS = "" } {for (i = 1; i <= NF; i++) if ($i == $num) count++ } END {print $count}'
2
С POSIX awk, предложенным в этом комментарий:
$ echo 12451 | awk '{print gsub(/1/,"")}'
2
Предположим, что данные поступают на стандартный ввод (, например. трубка изecho
):
LC_ALL=C tr -d -c '1' | LC_ALL=C wc -c
При этом удаляется любой символ, отличный от 1
, а затем подсчитываются оставшиеся символы.
Предполагая, что данные хранятся в переменной оболочки, value
, например, в.bash
:
ones=${value//[\!1]/}; echo "${#ones}"
Это практически то же самое, что и первая команда. Он удаляет все символы, отличные от -1
, из значения $value
, присваивает полученную строку новой переменной ones
и выводит длину этой строки.