Я знаю, что Вы сказали, что sed (никакая предназначенная игра слов), но если можно жить с Perl, следующее, должен сделать то, что Вы хотите (n=20):
#!/usr/bin/perl -w
my $n=20; ## The minimum length of the line
my $prev=""; ## This holds the number of chars in the previous line
my $pline; ## This holds the previous line
my $pp=0; ## Counter, lines will be printed if set to 1
while(<>){
## Skip line processing if we have already
## found our lines of interest
$pp==1 && do {print; next};
## Get non-space chars
my $a=join("",/[^\s]+/g);
## Print if requirements are met.
if (length($prev)> $n && length($a)> $n){
print $pline,$_;
$pp=1;
}
$prev=$a;
$pline=$_;
}
Сохраните его как foo.pl и работайте как так:
$ perl foo.pl infile.txt
Я прошел файл С ПРАКТИЧЕСКИМИ РЕКОМЕНДАЦИЯМИ в теневом пакете и узнал, что многие входят в систему, шаги обрабатываются PAM в наше время. В /etc/pam.d/login
файл я нашел следующий отрывок:
# This module parses environment configuration file(s) # and also allows you to use an extended config # file /etc/security/pam_env.conf. # # parsing /etc/environment needs "readenv=1" session required pam_env.so readenv=1 # locale variables are also kept into /etc/default/locale in etch # reading this file *in addition to /etc/environment* does not hurt session required pam_env.so readenv=1 envfile=/etc/default/locale
Мой /etc/default/locale
что-то вроде этого:
LANG="en_US.UTF-8"
В настоящее время я нахожусь на Ubuntu, другие дистрибутивы могли бы иметь другие имена файлов.
Чтобы быть честным, я не действительно уверен, полезно ли это; я также сомневаюсь, что мудро иметь нелатинские символы в пароле.