Солярис 10: Удалите строки конечного пробела из нескольких файлов

Я полагаю, что все необходимое для двоичной установки pkgsrc связывается как значение по умолчанию, но если Вы хотите pkgsrc источник, необходимо проверить код.

Я не думаю, что порты являются значением по умолчанию для NetBSD.

http://www.netbsd.org/docs/software/packages.html#docs

1
15.07.2014, 16:57
4 ответа

Должен работать быстрый небольшой сценарий. Я получил это от nixCraft некоторое время движение, и он работает вполне хорошо.

#!/bin/sh
files="/home/me/data/*.txt"
for i in $files
do
  sed '/^$/d' $i > $i.out
  mv  $i.out $i
done

Замена $files для Ваших потребностей.

4
27.01.2020, 23:13

Будет самым легким удалить все пустые строки:

sed -i.bak '/^$/d' $FILES

Это создаст резервное копирование с расширением .bak, выньте это, если Вы не хотите резервное копирование.

Если Вы хотите удалить строки с пробелом (и только пробелом) также, добавить \W*:

sed -i.bak '/^\W*$/d' $FILES

И это работает с --posix опция у гну sed (выключает расширения гну, таким образом, я думаю, что это должно работать над solaris):

sed -i.bak '/^[ \t]*$/d' $FILES

Добавьте больше пробельных символов при необходимости.

2
27.01.2020, 23:13
  • 1
    Это было бы прекрасно, если у меня был GNU sed доступный. У меня должно быть упоминание это. Я редактирую свой вопрос. –  rahmu 13.12.2011, 18:35
  • 2
    я добавил строку; если тот не работает, то, какая часть не работает/ведет себя то же? –  Kevin 13.12.2011, 18:42
  • 3
    -i опция, к сожалению, не доступна. Я просто возвратился домой и попробовал его, и это работало как ожидалось над Debian. прекрасный –  rahmu 13.12.2011, 20:44

Можно использовать следующую однострочную команду для удаления пустых строк через несколько файлов

find directoryname -name "filename" -print | xargs sed -i '/^$/d'

Если, например, Вы хотите удалить пустые строки из всех файлов, найденных в текущем каталоге и его подкаталогах, можно использовать следующую команду:

find . -name "*.*" -print | xargs sed -i '/^$/d'
0
27.01.2020, 23:13
[

] Различные способы удалить только пустые строки в трейлинге:[

] [
printf %s\\n "$(cat file)"|sponge file
tac file|awk /./,0|tac|sponge file
perl -0777 -pi -e 's/\n*$/\n/' file
gsed -i ':1;/^\n*$/{$d;N;b1}' file
bsdsed -i '' -e :1 -e '/^\n*$/{$d;N;b1' -e '}' file
] [

]Замены команд удаляют все потоки в трейлинге, поэтому, например, []echo "$(printf 'a\n\n')b"[] печатает []ab[]. [

] [

][]sponge[] из moreutils.[

] [

]Замените []tac[] на []tail -r[] в BSD.[

] [

][]perl -0777[] наборы []$_[] на весь вход и []-p[] распечатывают []$_[] после каждой строки. См. [] man perlrun[].[

] [

][]:[] устанавливает метку, []b[] ветки на метку, []$d[] удаляет пространство шаблона в последней строке, а []N[] добавляет следующую строку к пространству шаблона. [

] [

] GNU [] sed[] допускает точку с запятой после []: [] и []b[], но POSIX и BSD [] sed[] не допускают. []-i[] работает с GNU []sed[], но не с BSD []sed[] и []-i'[] работает с BSD []sed[], но не с GNU []sed[].[

].
1
27.01.2020, 23:13

Теги

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