Portál AbcLinuxu, 9. května 2025 20:57
processor : 0
model name : Intel(R) Xeon(R) CPU 3040@1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
processor : 1
model name : Intel(R) Xeon(R) CPU 3040@1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
[root@server]#
Potrebuji aby vypis vypadal takto:
processor : 0
model name : Intel(R) Xeon(R) CPU 3040@1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
processor : 1
model name : Intel(R) Xeon(R) CPU 3040@1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
[root@server]#
Tedy nemuzu pouzit sed '/cache/G'
, protoze to mi vlozi radek za oba vyskyty slova cache.
Jde nejak osetrit, aby sed vozil prazdny radek pouze za prvni vyskyt, nebo lepe za posledni ho nevlozil ?
Diky za radu.
#!/usr/bin/python import sys first = True for line in file('/proc/cpuinfo'): sys.stdout.write(line) if first and 'cache' in line: print first = False
sed -e "`wc -l zav2.m|cut -d ' ' -f1`d" <zav2.m
cat /proc/cpuinfo |grep -E '^processor|^model name|^cpu MHz|^cache size'|sed '/cache/G'
Kdyz to ale pustim rourou do toho cos napsal ty (bez jmena souboru) tak to nevrati nic.
grep -E '^processor|^model name|^cpu MHz|^cache size' /proc/cpuinfo|sed '/cache/G' > zav2.m
Nebo jinak - pokud víš, kolik řádků Ti ten grep vytáhne (podle příkladu 8), po průchodu prvního sedu jich bude 10, takže:
grep -E '^processor|^model name|^cpu MHz|^cache size' /proc/cpuinfo|sed '/cache/G' 'sed -n '1,9p'
line=`cat /proc/cpuinfo |grep -E '^processor|^model name|^cpu MHz|^cache size'|sed '/cache/G'|wc -l`
Snizeny o jednu.
Diky za odpoved.
line=9;line=$((--line));echo $line
line=9
cat /proc/cpuinfo |grep -E '^processor|^model name|^cpu MHz|^cache size'|sed '/cache/G'| sed -n "1,$linep"
Dik za reakci.
cat ... |grep ...
jsou zbytečné.
sed -n "1,${LINE}p"
Pocet radku zjistuji takhle:
line=`grep -E '^processor|^model name|^cpu MHz|^cache size' /proc/cpuinfo|sed '/cache/G'|wc -l`
Kdybych vedel jak jednoduse umazat pouze posledni radek, tak to udelam. Bohuzel to nevim a tak vymyslim takovehle silene konstrukce :)
JJ, vim. Jen v dobe psani toho prikazu jsem jeste nevedel.
Dik moc za reakci.
sed -e '$d'
awk '{print;if (/cache/ && c==0) {c=1;print " "}}'
[root@server proc]# cat /proc/cpuinfo |grep -E '^processor|^model name|^cpu MHz|^cache size'|sed '/cache/G'|awk '{print;if (/cache/ && c==0) {c=1;print " "}}'
processor : 0
model name : Intel(R) Xeon(R) CPU 3040 @ 1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
processor : 1
model name : Intel(R) Xeon(R) CPU 3040 @ 1.86GHz
cpu MHz : 1599.000
cache size : 2048 KB
[root@fw-liberec proc]#
Mezi prvni cache size a druhy procesor.
sed '/cache/G'
?
a=`awk '/cache/ {a=NR} END {print a}' /proc/cpuinfo`; awk -v a=$a '{print;if (/cache/ && NR!=a){print ""}}' /proc/cpuinfo
#!/usr/bin/python import sys fields = ['processor', 'model name', 'cpu MHz', 'cache size'] fr = file('/proc/cpuinfo') sys.stdout.write(fr.readline()) for line in fr: spl = line.split('\t') try: if fields.index(spl[0]) == 0: print sys.stdout.write(line) except ValueError: continue
sed '/cache/N;/cache.*processor/s/processor/\ processor/' </proc/cpuinfo
sed '/cache/N;/cache.*processor/s/processor/\nprocessor/' </proc/cpuinfo
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.