Linux文本處理三劍客之sed

一、什麼是sed

    sed(Stream EDitor)流編輯器,是一個非交互式的文本編輯器,它可以對文本文件和標準輸入進行編輯,標準輸入可以來自鍵盤輸入、文件重定向、字符串、變量等。sed從文本的一個文本行或者標準輸入中讀取數據,將其複製到緩衝區,然後讀取命令行或腳本的第一個命令,對此要求的行號進行編輯,重複此過程,直到命令行或者腳本中的所有命令都執行完畢。

    sed適用於以下三種場景:

編輯相對交互式文本編輯器而言太大的文件。

編輯命令太傅在,在交互式文本編輯器中難以輸入的情況

對文件掃描一遍,但是需要執行多個編輯函數的情況

二、sed命令組成部分

命令格式:sed [OPTION]...  'script'  [input-file] ...

[OPTION]:sed 命令選項

script:sed腳本,由“地指定界編與輯命令組成”(注意此處地址定界與編輯命令中間沒有任何符號)

三、sed命令常用選項及腳本詳解

sed選項:

    -n:不輸入模式空間中的內容至屏幕

# sed '/^#/d' fstab 
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# sed -n '/^#/d' fstab 
# 此處沒有任何顯示,模式空間中的內容爲^#開頭的文件,而剩下的被編輯命令d所刪除,所以沒有任何顯示
# sed '/^#/p' fstab  # p爲顯示模式空間的內容,因爲默認也顯示,所以此處每行出現兩次
#
#
# /etc/fstab
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# sed -n '/^#/p' fstab 
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#

    -e script,--expression=script:多點編輯

# sed -e '/^#/d' -e '/^$/d' fstab
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# 刪除以#號開頭的行,刪除以

    -f /PATH/TO/SOMEFILE

        指定文件,文件中每一行一個編輯命令

# cat sed_script 
# sed script
/^#/d
/^$/d
# sed -f sed_script /etc/fstab 
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    -i:直接編輯原文件(慎用)

# cp fstab fstab.bak
# sed -f sed_script -i fstab
# cat fstab
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    -r:支持使用擴展正則表達式

# sed -r '/^[[:space:]]*$/d' fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# 此處過濾出後空格行沒有了

地址定界:

    1、空地址:對全文進行處理;

        # 上面在演示sed的OPTIONS時演示過了,可以參照上面的理解

    2、單地址:

        #:指定行

        /pattern/:被次模式匹配到的每一行

        # 此處相同,上面在演示sed的OPTIONS時演示過了,可以參照上面的理解

    3、地址範圍

        #,#:1,3 一到三行

# sed '1,3d' fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

        #,+#:1,+3 從第一行開始,向下三行的範圍

# sed '2,+3d' fstab

# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# cat fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

        #,/part1/:從某行開始到第一次被模式匹配到的行

# sed '2,/^#/d' fstab  #刪除第2行到匹配到的第一個以#號開頭的行

# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# cat fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

        /part1/,/part2/:模式1匹配到的行到模式2匹配到的行

# sed '/^[^#]/,/^#/d' fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
# cat fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

        $:最後一行

# sed -n '$p' fstab
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# cat fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    4、步進 ~

        1~2:所有奇數行

        2~2:所有偶數行

# sed  -n '1~2p' fstab

# /etc/fstab
#
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
# sed -n '2~2p' fstab
#
# Created by anaconda on Fri Mar  4 08:36:03 2016
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# cat fstab

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

編輯命令:

    d:刪除被模式匹配到的行

    p:顯示模式空間中的內容

    a  \text:在行後面追加文本“text”,支持使用\n實現多行追加

# sed '/^#/a \new line' fstab 

#
new line
# /etc/fstab
new line
# Created by anaconda on Fri Mar  4 08:36:03 2016
new line
#
new line
# Accessible filesystems, by reference, are maintained under '/dev/disk'
new line
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
new line
#
new line
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    i  \text:在行前面插入文本“text”,支持使用\n實現多行插入 

# sed '/^#/i \new line' fstab 

new line
#
new line
# /etc/fstab
new line
# Created by anaconda on Fri Mar  4 08:36:03 2016
new line
#
new line
# Accessible filesystems, by reference, are maintained under '/dev/disk'
new line
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
new line
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    c  \text:把匹配到的行替換爲此處指定的文本“text”

# sed '/^#/c \new line' fstab 

new line
new line
new line
new line
new line
new line
new line
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中

# sed -n '/^#/w newfile1' fstab
# cat newfile1 
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#

    r  /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行後面;文件合併

# sed '/^[[:space:]]*$/r newfile' fstab

# how are you
# how old are you
# where are you going
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    =:爲模式匹配到的行打印行號

# sed '/^#/=' fstab

2
#
3
# /etc/fstab
4
# Created by anaconda on Fri Mar  4 08:36:03 2016
5
#
6
# Accessible filesystems, by reference, are maintained under '/dev/disk'
7
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8
#
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    !:條件取反

地址定界!編輯命令

# sed -n '/^#/p' fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 08:36:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
# sed -n '/^#/!p' fstab

UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0

    s///:查找替換,其分隔符可自行指定,常用的有s@@@, s###等

替換標記:

    g:全局替換

    w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中

    p:顯示替換成功的行


# 刪除/etc/grub2.cfg

# sed 's@^[[:space:]]\+@@' /etc/grub2.cfg 
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="${saved_entry}"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
terminal_output console
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/00_tuned ###
set tuned_params=""
### END /etc/grub.d/00_tuned ###
### BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
source ${prefix}/user.cfg
if [ -n ${GRUB2_PASSWORD} ]; then
set superusers="root"
export superusers
password_pbkdf2 root ${GRUB2_PASSWORD}
fi
fi
### END /etc/grub.d/01_users ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-ad88b2e2-0eac-45e8-80b3-742a642827d7' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  756954a4-022d-4da1-abe5-ed3dc587c95a
else
search --no-floppy --fs-uuid --set=root 756954a4-022d-4da1-abe5-ed3dc587c95a
fi
linux16 /vmlinuz-3.10.0-327.el7.x86_64 root=UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 ro rhgb quiet LANG=en_US.UTF-8
initrd16 /initramfs-3.10.0-327.el7.x86_64.img
}
menuentry 'CentOS Linux (0-rescue-94b3ec34f75d44df93cc011c79159864) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-94b3ec34f75d44df93cc011c79159864-advanced-ad88b2e2-0eac-45e8-80b3-742a642827d7' {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  756954a4-022d-4da1-abe5-ed3dc587c95a
else
search --no-floppy --fs-uuid --set=root 756954a4-022d-4da1-abe5-ed3dc587c95a
fi
linux16 /vmlinuz-0-rescue-94b3ec34f75d44df93cc011c79159864 root=UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 ro rhgb quiet
initrd16 /initramfs-0-rescue-94b3ec34f75d44df93cc011c79159864.img
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
# 刪除/etc/fstab文件中所有以#開頭的行的行首的#號及#後面的所有空白字符
# sed 's/^#[[:space:]]*//g' fstab

/etc/fstab
Created by anaconda on Fri Mar  4 08:36:03 2016
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
UUID=ad88b2e2-0eac-45e8-80b3-742a642827d7 /                       xfs     defaults        0 0
UUID=756954a4-022d-4da1-abe5-ed3dc587c95a /boot                   xfs     defaults        0 0
UUID=19dba320-753d-45b3-9071-85ae514f46e0 /usr                    xfs     defaults        0 0
UUID=67ffa57f-07e6-426f-8914-f04154a11b47 swap                    swap    defaults        0 0
# 給定一個路徑取出其路徑名,即dirname
# echo "/usr/bin/pwd/"|sed 's@[^/]*/\?$@@g'
/usr/bin/
# 分析: 以非/開頭後面至少出現一次後面跟一個/可以存在可以不存在最後錨定行尾




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章