Portál AbcLinuxu, 7. prosince 2025 07:13
sed -e "s/soubor/${file//\//\\\/}/g" foft.m.bak > foft.m;To je moje oblíbené
file="${file/\\/\\\\}"
sed -e "s/soubor/${file/\//\\\/}/g" foft.m.bak > foft.m;
Pokud ale octave používá \ jako escape znak, tak by to muselo býtfile="${file/\\/\\\\\\\\}"
sed -e "s/soubor/${file/\//\\\/}/g" foft.m.bak > foft.m;
Pokud požívá jiný escape znak, tak se pochopitelně musí ještě oecapovat příslušný znak, že
touch ahoj\ vole\ \&\ rm\ -rf ale stejně se mi to nějak nedaří rozes...$ ls ahoj* ahoj vole & echo kuku $ for i in ahoj*; do echo $i;done ahoj vole & echo kuku $
/vzorek/{
prikaz;
prikaz;
}
soubor tohle (je to setříděné podle první položky):
luser:je máčka a odpad pepa:ten tu nemá účet, takže se nevypíše root:je největší king yeti:je taky kingtak mi stačí
sort /etc/passwd | join -o 1.6,2.2 -t: - souboraby mi to vypsalo (položka 6 v
/etc/passwd je home)
/home/luser:je máčka a odpad /root:je největší king /home/yeti:je taky kingsložitejší možnosti mohou vyžadovat něco setřídit nebo v tom změnit delimitery předem (případně on-the-fly zároveň se sortem), takže už to třeba nebude one-liner, ale princip je stále stejný. jasný?
#!/bin/bash
while read line; do
user=${line%% *}
echo ${line/$user/`grep ^$user: /etc/passwd`}
done < $1
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.