Лучше всего это сделатьawk
:
awk '/^nnn/ && length >= 25 { next } { print }' file
/^nnn/
будет соответствовать заданному регулярному выражению ("строка начинается с nnn
" ).length
(илиlength($0)
)вернет длину входной строки. Если выражение совпадает и длина равна 25 или больше, строка игнорируется, в противном случае она печатается. { print }
можно заменить просто 1
, если набирать текст слишком долго.
Или,
awk '!/^nnn/ || length < 25' file
Это делает то же самое, но с обратным условием. Если строка не соответствует выражению или ее длина меньше 25 символов, то она печатается. Другие строки игнорируются.
Оба они производят
nnnASDDGfdgdsfn
sadbSADSDDFSDFrrrRRRRRRRttTGGGG
для заданных входных данных.
с помощью xargs вы можете вызывать bash, чтобы делать то, что хотите
cat infile \
| xargs -I {} -P3 bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done '
Поверх этой команды вы можете добавить то, что хотите
cat infile \
| xargs -I {} -P3 bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done ' \
| MY_POWER_FULL_SED_OR_GREP
или если вы хотите добавить grep в команду bash
cat infile \
| xargs -I {} -P3 bash -c 'for sub in "" "www." "ftp."; do host -t a "${sub}{}" ; done | MY_POWER_FULL_SED_OR_GREP '