другой вариант
ls -i
, который дает (с правильным значением inode)
5233 > option[value='2016'] 5689 foo
, затем
find . -inum 5233 -delete
optionnaly (для предварительного просмотра)
find . -inum 5233 -print
, вы также можете добавить -xdev
, если ниже есть другая файловая система.
Puedes hacerlo como:
sed -e '/^nnn/!b' -e '/.\{26\}/d'
o:
sed '/^nnn/{/.\{26\}/d;}'
¿Qué tal humildegrep
$ grep -v '^nnn.\{23\}' ip.txt
nnnASDDGfdgdsfn
sadbSADSDDFSDFrrrRRRRRRRttTGGGG
$ # if ERE is available
$ grep -vE '^nnn.{23}' ip.txt
nnnASDDGfdgdsfn
sadbSADSDDFSDFrrrRRRRRRRttTGGGG
-v, --invert-match Invert the sense of matching, to select non-matching lines.
Лучше всего это сделатьawk
:
awk '/^nnn/ && length >= 25 { next } { print }' file
/^nnn/
будет соответствовать заданному регулярному выражению ("строка начинается с nnn
" ).length
(илиlength($0)
)вернет длину входной строки. Если выражение совпадает и длина равна 25 или больше, строка игнорируется, в противном случае она печатается. { print }
можно заменить просто 1
, если набирать текст слишком долго.
Или,
awk '!/^nnn/ || length < 25' file
Это делает то же самое, но с обратным условием. Если строка не соответствует выражению или ее длина меньше 25 символов, то она печатается. Другие строки игнорируются.
Оба они производят
nnnASDDGfdgdsfn
sadbSADSDDFSDFrrrRRRRRRRttTGGGG
для заданных входных данных.
sed
раствор:
sed -E '/^nnn.{23}/d' file
/^nnn.{23,}/
-соответствует только строке, которая начинается с nnn
и содержит более 25 символов(.{23,}
-соответствует последовательности символов длиной не менее 23 символов)d
-удалить совпавшую строку Выход:
nnnASDDGfdgdsfn
sadbSADSDDFSDFrrrRRRRRRRttTGGGG
То же с командойawk
:
awk '!/^nnn.{23}/' file