Многие дистрибутивы различными способами поддерживают это.
В Debian и его производных вы должны установить архитектуру amd64
для системы (или даже просто ядро ), затем добавить архитектуру i386
(dpkg --add-architecture i386
, а затемapt update
)и установить apache2:i386
. См. Как запустить 32 -битные программы на 64 -битном Debian/Ubuntu? для получения подробной информации.
В Fedora вы можете установить httpd.i686
непосредственно в 64-битной -системе x86.
Другие дистрибутивы поддерживают это по-разному, приведенное выше не является исчерпывающим.
Вот один из способов использования группы захвата
sed 's/.*TEST3 Id: \(.*\).*/\1/'
Тест
echo "TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt" | sed 's/.*TEST3 Id: \(.*\).*/\1/'
ABCD1234
Попробуйте этот:
echo "$INPUT" | sed 's/.*TEST3 Id: \([^ ]*\).*/\1/'
\( \)
— полезная конструкция, которая ограничивает часть регулярного выражения, которая будет воспроизведена с помощью \1
. Таким образом, он воспроизводит только самую большую строку без пробелов, начинающихся сразу после TEST3 Id:
.
Вы не сказали, что ограничены sed...
echo "$INPUT" | awk '{print $7}'
Вы можете попробовать это с GNUgrep
:
echo "$INPUT" | grep -Po "(?<=Id:[[:blank:]]).*[[:blank:]]"
Расширение параметра.
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
INPUT="${INPUT% TEST*}"
echo "${INPUT##* }"
Замена команды строкой и массивом Here.
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
OUTPUT=$(read -ra var <<< "$INPUT"; echo "${var[-2]}")
echo "$OUTPUT"
Ок.
INPUT="TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt"
echo "$INPUT" | awk '{print $(NF-1)}'
Или сделайте то, что вы сделали с sed
INPUT=$(echo "TEST: www.google.com TEST2: 123444 TEST3 Id: ABCD1234 TEST.txt" | awk '{print $(NF-1)}')