Не перекомпилировав ядро и вероятно целый набор утилит пространства пользователя. SELinux является, в конце концов, базовой частью ядра Linux, и проектирование системы предполагает, что будет доступно, даже если не используемый.
Так как Вы не указывали, почему Вы хотите сделать это (Вы должны иметь), трудно советовать далее. Независимо от того, что это, это - вероятно, плохая идея.
Для отключения SELinux отредактируйте /etc/selinux/config
файл и набор SELINUX=disabled
. При выполнении запускать установки можно всегда устанавливать это в %post
раздел, так, чтобы это было уже отключено на первой начальной загрузке.
С GNU sed
:
sed -i 's/\s//g;s/\(|[^|]*\)|\([^|]*\)|/\1\2/;s/.*/\L&/' Results.txt
Вам действительно не нужен временный файл.
awk -F'|' '{gsub("[ \t\r]", "", $0)}{print $1,tolower($2$3$4),$5}' OFS='|' inputfile
Первая часть выражения делает то, что вы делаете, используя tr
. Вторая часть объединяет поля 2-4, переводит их в нижний регистр и печатает вместе с двумя другими полями.
Для вашего ввода он выдаст:
45008657|a.long|0
49210987|a.steven|3262
49600694|a.steven|4772
467814|a.rafealnadal|4133
53111047|a.miketyson|13484
GNU awk 4.1.0 и выше поддерживает редактирование на месте. Вы можете сказать:
awk -i inplace -F'|' '{gsub("[ \t\r]", "", $0)}{print $1,tolower($2$3$4),$5}' OFS='|' inputfile
В исходной попытке вы можете поместить все команды в один конвейер, если воспользуетесь утилитой sponge
:
cat Results.txt |
tr -d " \t\r" |
awk 'BEGIN { FS = "|" } ;
{ print $1"|"tolower($2) tolower($3) tolower($4)"|"$5 }' |
sponge Results.txt
sponge
сохранит свой stdin
в памяти до тех пор, пока не достигнет конца ввода, а затем выполнит запись в файл. Это должно быть приемлемо для файла указанного размера.
Обратите внимание, что вы также можете использовать перенаправление оболочки для ввода файла в td
вместо cat
, например:
tr -d " \t\r" <Results.txt
Просто используйте инструмент, который позволяет редактировать на месте. Perl, например:
perl -i -F'\|' -lane 's/[ \t]+//g for @F; print lc("$F[0]|$F[1]$F[2]$F[3]|$F[4]")' a
-i
включает редактирование in-plcae, изменения применяются непосредственно к исходному файлу (другими словами, perl
имеет дело с созданием и удалением временный файл).
-a
включает автоматическое разделение символа, заданного -F
, поля сохраняются в массиве @F
.
s / [\ t] + // g
удаляет все пробелы и табуляции, а lc ()
переводит все в нижний регистр.