Portál AbcLinuxu, 20. listopadu 2025 07:40
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.