Файл /etc/X11/app-defaults/XTerm
определяет X ресурсов, используемых Xterm. X ресурсов являются значениями конфигурации, используемыми старомодным X приложений (приложения, которые появились перед современными средами, такими как Gnome и KDE, которые имеют их собственную, менее мощную систему конфигурации).
Не изменяйте системный файл. Вместо этого запишите свои собственные настройки в ~/.Xresources
. Большинство установок читает этот файл автоматически, но на Cygwin, Вы, возможно, должны выполнить его вручную.
Установки ресурса имеют форму SETTING: VALUE
где SETTING
состоит из разделенных от точки имен. Имя является названием приложения, установку которого Вы указываете (здесь, XTerm
), затем обнулите или более вложенные компоненты (“виджет”) и наконец имя ресурса. Страница руководства документирует имена ресурса.
XTerm.VT100.utf8: 1
XTerm.VT100.renderFont: true
Имена ресурса чувствительны к регистру. Названия StudlyCapsified определяют классы, в то время как строчные имена определяют экземпляры. Вы не должны действительно понимать то, что это означает; если это когда-нибудь подходит, знают, что настройки для экземпляра имеют приоритет по настройкам для класса.
Спасибо большое, ребята. Это тот кусок кода, который окончательно решил мою проблему.
nawk -v fname="${filename}" -F '/|:' '
function isnum(x){return(x==x+0)}
/P1/,/P3/{
# Found start increment i reset variables go to next line
if(/P1/){
++i
fid =""
count++
next
}
# Found end validate variable and print go to next line
if(/P3/){
printf "%s|",count
printf "%s|",isnum(fid)?fid:"NULL"
next
}
if(!fid && /36,59:*/)
{
fid = $NF
}
' ${filename} >>output.txt
Но теперь у меня есть другая проблема, для которой я создал отдельный поток.
Вот ссылка, если вы, ребята, можете помочь.
С perl
(затуманивает весь файл в памяти):
perl -0777 -ne 'while (/P1\n(.*?)\nP2/gs) {
printf "Value%d:%s\n", ++$n, $1 =~ /^10,9.*\// ? $'\'': "NULL"}'
Другое решение awk
:
$ awk '$0=="P1" {f=1} $0=="P2" {f=0}f' file | paste - - | \
awk -F"\t" '$2~/[0-9]/ {split ($2,a,"/"); \
print "Value"NR":"a[2]} $2!~/[0-9]/ {print "Value"NR":NULL"}'
Value1:123456
Value2:98765
Value3:NULL
Это работает и является полностью переносимый:
sed '\|^P1.*|!d;s||Value:|
:n
N;\|\nP2|!bn
s|:.*\n10,9[^/]*/|:|
s|\n.*||;s|:$|:NULL|'
Поток работает следующим образом:
Сначала он обращается к строке ^
, начинающейся с P1
Если текущая строка !
не соответствует d
выбирает.
Если это так, он заменяет P1
на Значение:
Затем устанавливает внешнюю метку : n
и извлекает N
внешняя линия.
Если \ nP2
равно !
не обнаружил, а затем b
возвращается к метке : n
ext и пытается снова и снова, пока это не произойдет.
Затем удаляются все вхождения :. * \ N10,9
до первого встречающегося символа /
.
Удаляет первую доступную \ n
строку и все следующие символы.
Если последним символом является :
двоеточие после Value
, вставляется строка NULL
.
Шаги 6 и 7 - это то, что заставляет его работать. На этапе 6 он удаляет строку \ n
, предшествующую желаемой числовой строке, но если этого нет, то следующий \ n
ewline будет строкой, следующей сразу за Value:
, поэтому все перейдет на шаг 7.
Вот оно в действии:
sed '\|^P1.*|!d;s||Value:|
:n
N;\|\nP2|!bn
s|:.*\n10,9[^/]*/|:|
s|\n.*||;s|:$|:NULL|' <<\DATA
P1
10,9:6/123456
P2
blah blah
P1
10,9:5/98765
P2
blah
blah
P1
blah blah
P2
DATA
Value:123456
Value:98765
Value:NULL
Решение perl
:
$ perl -F'/' -alne '
if (/P1/../P2/ and $_ !~ /^P/) {
print "Value@{[++$i]}:",$F[1]?$F[1]:"NULL";
}
' file
Value1:123456
Value2:98765
Value3:Null
Решение awk
:
$ awk -F'/' '/P2/{f=0};/P1/{f=1;next};f{print "Value"++i":"($2?$2:"Null")}' file
Value1:123456
Value2:98765
Value3:Null