Вот сценарий, чтобы сделать это:
aligntabs.pl
#!/usr/bin/perl
my $delim = '\s*\t\s*';
my %length = ();
my @lines = ();
for my $line (<>) {
chomp $line;
my @words = split $delim, $line;
my $numwords = scalar(@words);
for my $i (0..$numwords-1) {
my $maxlen = $length{$i} // 0;
my $thislen = length($words[$i]);
$maxlen = ($thislen > $maxlen)? $thislen: $maxlen;
$length{$i} = $maxlen;
}
push @lines, [@words];
}
foreach my $wordsref (@lines) {
my @words = @$wordsref;
my $numwords = scalar(@words);
for my $i (0..$numwords-1) {
if ($i < $numwords-1) {
my $fieldlen = $length{$i};
printf "%-${fieldlen}s ", $words[$i];
}
else {
print $words[$i];
}
}
print "\n";
}
использование
$ aligntabs.pl < infile
var1 var2 var3
var_with_long_name_which_ruins_alignment var2 var3
Используйте одинарные кавычки:
echo -e '#!/usr/bin/python\nimport string as s,random;print "".join(random.sample(s.letters+s.digits+s.punctuation,9))'>pg;chmod +x pg;./pg
Правила для !
был вид привитых на другие правила заключения в кавычки впоследствии (от csh). Они были очень полезной спиной, когда оболочки не имели редактирования командной строки, но некоторые люди все еще используют их теперь.
P.S. Так как Вы кодируете для удара:
echo $'#!/usr/bin/python\nimport string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'>pg;chmod +x pg;./pg
Это работает над большинством нельдов:
echo python -c \''import string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'\'>pg;chmod +x pg;./pg
(Не то, чтобы я понимаю, почему Вы хотите создать сценарий или почему название сценария должно быть двумя буквами.)
Я должен был Погуглить, прежде чем я спросил.
Так как Вы не зависите от удара для расширения переменных [..] Вы могли использовать одинарные кавычки вместо этого. Строки в одинарных кавычках не расширены ударом.
гудок в ответ на то, Как я выхожу из восклицательного знака?
$''
.:) PS: Это должно было попытаться израсходовать те запасные символы. У меня есть чувство отходов, когда я отправляю твиты короче, чем 140 символов. – badp 18.12.2010, 02:45pwgen
по сравнению с.pwgen -s
.) – Gilles 'SO- stop being evil' 18.12.2010, 02:47