Если Вы запускаете kde от xinit
команда, Вы могли установить следующие переменные среды в ~/.xinitrc,
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
Это заставит все программы уважать ibus. (Если это не работает на Вас, изменить startkde4
напишите сценарий непосредственно, добавьте эти 3 строки к вершине его, после #!/bin/sh
И также автоматический запуск ibus программы, ibus-daemon -xd
, установите это в systemsettings
, существует что-то названное "Запуск", не может помнить точное имя
Это awk
должен сделать это:
awk '{
if ( $NF ~ /[0-9]+:[0-9]+:[0-9]+/ ) {
lasttime = $NF
print
} else {
print $0, lasttime
}
}' < myfile.txt
Вот решение для удара в случае, если это имеет значение. Это действительно использует сингл awk
, но это могло, вероятно, быть пересмотрено в случае необходимости:
while read line ; do
ncol=$(echo "$line" | awk '{print $NF}')
if [[ "$ncol" == *:*:* ]]; then
tmstmp="$ncol"
echo "$line"
continue
fi
echo "$line $tmstmp"
done < 82031.txt
Файл 82031.txt
включает следующее:
ABCD 01206001022T01YA022T01YA022T07SO 09:20:38
ABCD 01206001022ACION 09:24:40
ABCD 04006001021S01UK 09:24:42
ABCD 7878696621321312 23213213213213
ABCD ASADSADSFSSDSSD 09:24:50
Выполнение вышеупомянутого сценария производит следующее:
ABCD 01206001022T01YA022T01YA022T07SO 09:20:38
ABCD 01206001022ACION 09:24:40
ABCD 04006001021S01UK 09:24:42
ABCD 7878696621321312 23213213213213 09:24:42
ABCD ASADSADSFSSDSSD 09:24:50
Вот альтернатива, которая использует только Bash. Вместо использования awk
для вытаскивания последнего столбца из строки входа из .txt файла мы используем Bash read
команда на while
цикл. Опции -ra
отключите обратные косые черты от того, чтобы быть символом ESC (-r
) и -a
разделяет вход с помощью $IFS
разделитель, помещая каждую ценность атомов текста в элемент в массиве ${line[@]}
.
while IFS=" " read -ra line ; do
ncol="${line[@]: -1:1}"
if [[ "$ncol" == *:*:* ]]; then
tmstmp="$ncol"
echo "${line[@]}"
continue
fi
echo "${line[@]} $tmstmp"
done < 82031.txt
Этот бит, ${line[@]: -1:1}
вытаскивает последний столбец массива ${line[@]}
.
read -a
читать в массив, а не строку было бы способом устранить вызов к awk
.
– jordanm
07.07.2013, 06:04
Еще одно решение для удара
[[ ! -f $1 ]] && { echo -e "\tUsage:\t\n\t\t$0\t<input_file>\n"; exit 1; }
while read -ra line;
do
if [[ ${line[@]} =~ [0-9]+:[0-9]+:[0-9]+ ]]; then
echo ${line[@]}
lasttime=${line[@]: -1:1}
else
echo ${line[@]} $lasttime
fi
done < $1