惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
A
Arctic Wolf
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
I
Intezer
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
Project Zero
Project Zero
Google DeepMind News
Google DeepMind News
月光博客
月光博客
Attack and Defense Labs
Attack and Defense Labs
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
The Hacker News
The Hacker News
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
IT之家
IT之家
C
Cyber Attacks, Cyber Crime and Cyber Security
Security Latest
Security Latest
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
腾讯CDC
T
Troy Hunt's Blog
SecWiki News
SecWiki News
罗磊的独立博客
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Last Watchdog
The Last Watchdog
美团技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Last Week in AI
Last Week in AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
O
OpenAI News
P
Proofpoint News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 【当耐特】
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
TaoSecurity Blog
TaoSecurity Blog

方永、南天紫雲

linux透明代理 技术的边界 停机问题通俗说明 Rust与oracle、redis集群的纠结 学习能力的增长 微信调试的原语 mac外接移动硬盘安装ArchLinux linux的死机问题 linux下全键盘操作 漂亮又好用的bspwm linux本机透明代理 ssh、mosh、autossh linux不能待机又一例 从WordPress切换到Hugo 折腾电脑开机 linux系统QQ新思路 Arch Linux的字体渲染 svn管理之submin OpenWrt自动fucking墙記錄 二维码(qrcode)名片的一些事儿 用lua nginx module搭建一个二维码(qr code)生成器 CentOS 7 安裝註記 php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題 ThinkPad之FAN_ERROR、hi fi聲卡 jetty多端口部署 OpenWrt簡單暴力限網 linux中cron之PATH变量 OpenWrt的WDS無線橋接模式 再敘OpenWrt下的rtl8187無線中繼 終端進化之二零一三 linux下的郵件服務器:postfix_dovecot_roundcube 一次性密碼/動態口令卡原理 xl2tp之VPN靜態地址分配 rtl2838U2832试用记 linux中pptp协议VPN搭建 glances监控工具安装 CentOS6.4硬盘安装 Debian Wheezy硬盤/U盤安裝小記 Kirby小試 zsh shell怎么打开常用的目录? OpenWrt SSH免密码使用密钥登录 linux中的vsftpd的匿名(anonymous)用户配置 無光驅無USB無軟驅,怎麼修復硬盤MBR? 那些個人網站 linuxFreeBSD下的dnspod动态域名客户端 Windows系统盘的32K之殇 一枚Chrome插件引起的大量磁盤IO問題 用批處理切換網卡的IP(適用Win7、Win8) Windows中的DHCP服务器 Win8啓動時出現“您的電腦需要修復”問題的解決辦法 Windows8睡眠(待机)模式异常处理 最强大好用而又小巧的计算器 Windows8運行不能保存歷史命令 Win8下的红警2尤里复仇 为cmd添加readline,如Bash Shell般使用cmd 手动添加修改win8 win+x菜单 Win8運行卸載程序時提示2503之解決一法 烽火HG110提权一法 缓解眼疲劳有效的办法 mintty乱码解决办法 糟糠美妾 免费易用的Win8 ArchLinux的類box環境音量調節二三事 使用OpenWrt与curl挂QQ OpenWrt的安全 OpenWrt BCM63xx rtl8187使用注意事项 Arch Linux之systmed使用简介 Archlinux 2012.07.15之后发布的镜像新手安装完全向导 FreeBSD 9.0 安装简记 记一由FreeBSD引发的午夜惊魂 Jekyll or handmade wi-fi无线破解过程与原理简要介绍 修复QQ影音异常卸载后的文件关联 吐槽一下000webhost 为OpenWrt的luci Web界面加速 最小的sed for Windows linux的磁盘自动挂载 OpenWrt中crontab -e的使用 sddns(dnspod client for OpenWrt)使用说明 OpenWrt中vsftp添加新用户 php+markdown写博客 linux arp防火墙之p2p终结者 墙外的世界很精彩 OpenWrt使用dnspod的动态域名解析(ddns)功能 OpenWrt架设nginx php网站 openwrt架设uhttpd+php+sqlite网站 vim自动跳到上次离开的光标位置 OpenWrt无线中继配置文件 修行八支 漫步者R201T打摩升级改造 阿里(Ali)3328系dvb接收机软件升级方法 db120刷OpenWrt固件并使用ppp方式ADSL拨号 移动短信助手 chrome tips一则 cdate,显示中国传统农历日期 更改硬盘模式为AHCI后Windows及linux的调整 使用grub2加载软盘和光盘镜像 电脑用数据线连接手机上网 电脑通过蓝牙连接手机GPRS上网 我与我的语言
sed之模擬tail
zola · 2013-11-11 · via 方永、南天紫雲

sed以簡潔的語法,與vi一貫的風格,受許多人的衷愛。

sed有許多現成的語句組合,可以提供各種實用的功能,sed模擬tail,將一文件的所有行倒序打印,就是一例。

語句如下:

sed -n 'G;h;$p' this_file

this_file 中第1行是 1 ,第2行是 2 , … ,第10行是 10 ,那麼這條語句將會打印出:

10
9
8
7
6
5
4
3
2
1

看起來很神奇,理解起來其實也很簡單。

首先要知道,sed有兩個緩存區,一個存放讀入的文件當前行的內容,稱爲 pattern buffer,一個稱作hold space,可存放一些自定義的內容。

如上面 this_file ,sed讀入第1行的內容 1 ,那麼 pattern buffer的內容就是 1G 命令後,pattern buffer的內容變爲 1\n\n 爲換行符, G 命令的作用是把hold space的內容追加到pattern buffer後面,然後是命令 ;; 的作用類似於其它語言,不過更爲原始,意爲“繼續將 ;後面的命令作用於當前的pattern bufferhold spaceh 命令將複製pattern buffer中的內容到hold space,替換了原來hold space中的內容,這樣, h 命令之後hold space的內容就是 1\n$p 的作用是在最後一行時打印pattern buffer中的內容, $ 代表最後一行的行號,爲 p 命令指定作用範圍, p 的作用是打印pattern buffer中的內容。這樣,在第1行,整個命令組合執行完,sed不會有任何輸出,pattern buffer中的內容是 1\nhold space中的內容也是 1\n

然後到第2行,pattern buffer中的內容是 2G 命令把hold space的內容追加到pattern buffer後面,那麼 G 命令後pattern buffer中的內容爲 2\n1\nh 命令後hold space的內容爲 2\n1\n 。如此反覆,到最後一行,pattern buffer的內容爲 10\n9\n8\n7\n6\n5\n4\n3\n2\n1\n ,這時 h 仍會複製pattern buffer中的內容到hold space,不過已沒什麼作用,而 $p 將會執行,打印出pattern buffer的內容,作爲sed唯一的輸出。

sed的 -n 選項說明不去打印 pattern buffer的內容。