Sed
使用 sed 或 awk 相當於什麼“grep | cut”?
假設我有一個配置文件
/etc/emails.conf
email1 = user@dinkum.dorg email2 = user@winkum.worg email3 = user@stinkum.storg
我想收到電子郵件2
我可以做一個:
grep email2 /etc/emails.conf | cut -d'=' -f2
獲取 email2,但是我如何使用一個 sed 或 awk 命令“更酷”並刪除 cut 命令會留下的空格?
用awk怎麼樣?
awk -F = '/email2/ { print $2}' /etc/emails.conf
-F =
欄位由“=”分隔'/email2/ { print $2}'
在匹配“email2”的行上,列印第二個欄位
確切的等價物類似於:
sed -n '/email2/{s/^[^=]*=\([^=]*\).*/\1/;p;}' < file
但你可能想要:
sed -n 's/^[^=]*email2[^=]*=[[:blank:]]*//p' < file
(即僅匹配
email2
第一個之前的部分,=
並返回第一個右側的所有內容=
(跳過前導空格),而不僅僅是直到第二個的部分(=
如果有)。