sed

Regular expression pattern filtering

به کمک sed می‌توانید اطلاعات فایل‌های متنی را با regular expression ها فیلتر کنید. به عنوان نمونه برای فایل ورودی زیر:

data.txt
name family

hooshang rahimi
mahsa kazemi
dorsa sadegh

اجرا کد زیر:

cat data | sed -e '/kazemi/d'

خروجی زیر را تولید می‌کند:

name family
hooshang rahimi
dorsa sadegh

چند نمونه دیگر:

cat data.txt|sed -e 's/\(\w\)/> \1/' # substitution

> name family
> mohsen kazemi
> hooshang rahimi
> mahsa kazemi
> dorsa sadegh


cat data.txt | sed -n -e '/.*mi$/p' # printing
# -n switch for not printing by default
# `p` command for print line

mohsen kazemi
hooshang rahimi
mahsa kazemi


# a more useful example could be:
cat /etc/squid/squid.conf | sed -ne '/^[^#]/p'
# strip comment lines from Squid configuration file


cat data | sed -e '1d' # no regulat expression pattern
# delete first line

hooshang rahimi
dorsa sadegh
mahsa kazemi
dorsa sadegh


pwd
 /home/me/desktop/here 
pwd | sed -e 's#/#/\v/g' 
# change modifier to #
# use `g` command to match pattern multiple times on line

/
 home/
     me/
       desktop/
              here

sed به صورت خط به خط پترن را به ورودی اعمال می‌کند ولی به کمک GNU sed می‌توانیم عملیاتی روی خطوط دیگر هم انجام دهیم:

  cat data.txt | sed -e '/rahimi/, +1d'  # delete /rahimi/ and line after it
  name family
  mohsen kazemi
  dorsa sadegh
unix*


    ۱۳۹۱/۱۰/۱۲ ۲۰:۱۱:۱۹