《Advanced Bash-scripting Guide》学习(六):从/etc/fstab中读行
本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
ABS书上的例子:
代码块和I/O重定向
#!/bin/bash
#从/etc/fstab中读行
File=/etc/fstab
{
read line1
read line2
} < $File
echo "First line in $File is:"
echo "$line1"
echo
echo "Second line in $File is:"
echo "$line2"
exit 0
#现在,你怎么分析每行的分割域
#暗示:使用awk
实践证明,当/etc/fstab文件最开始有空格或者注释的时候,打印出来的要么是空白,要么是一个#,ABS是这样提示的:Now, how do you parse the separate fields of each line?Hint: use awk, or . . .Hans-Joerg
Diers suggests using the "set" Bash builtin。大意是:现在,你怎么分析每行之间的分隔域?提示:运用awk,或...Hans-Joerg Diers建议用set这个bash内建命令。
说实在的,我不明白为什么使用awk,因为awk是截取列的,现在要读取的是行,对于set,我也是知之甚少。鉴于这种情况,我将此脚本做了一定的改写,让这个脚本打印的是非空白和注释的行。也许以后,随着shell知识的不断增长,改进后的脚本势必会重新改写。也期待着那一天的到来。
一个改进的脚本
#!/bin/bash
#从/etc/fstab中读取行
printf "$(cat /etc/fstab | sed '/^$/d' | grep -v "^#")\n" > file
File=/root/sh/file
{
read line1
read line2
} < $File
echo "First line in $File is:"
echo "$line1"
echo
echo "Second line in $File is:"
echo "$line2"
echo
exit 0
注意我将/etc/fstab下非空白和注释的行重定向到file文件中,再从file文件中读取。
去除空白行的几种方法:
1.grep命令
grep -v "^$" 文件名
2.sed命令
cat 文件名 | sed '/^$/d'
3.awk命令
cat 文件名 | awk '{if($0!="")print}'
cat 文件名 | awk '{if(length!=0)print $0}'
脚本运行结果
《Advanced Bash-scripting Guide》学习(六):从/etc/fstab中读行的更多相关文章
- advanced bash shell guide读书笔记
http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71
- CorePlot学习六---点击scatterPlot中的symbol点时弹出对应的凝视
因为项目须要用到用户点击 symbol时,弹出对应的具体信息,发现国内解说的比較少,经过一番搜索验证最终解决,先看效果图: 详细须要改动的代码例如以下: 首先要引用托付方法:CPTScatterPlo ...
- SQL Server 2012学习笔记 2 Server Core中命令行安装SQL
Setup.exe /qs /ACTION=Install /FEATURES=SQLEngine,Replication /INSTANCENAME=MSSQLSERVER /SQLSVCACCOU ...
- advanced dom scripting dynamic web design techniques Part One DOM SCRIPTING IN DETAIL CHAPTER 1 DO IT RIGHT WITH BEST PRACTICES
You’re excited; your client is excited. All is well. You’ve just launched the client’s latest websit ...
- day 84 Vue学习六之axios、vuex、脚手架中组件传值
Vue学习六之axios.vuex.脚手架中组件传值 本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
- 前端学习 第六弹: javascript中的函数与闭包
前端学习 第六弹: javascript中的函数与闭包 当function里嵌套function时,内部的function可以访问外部function里的变量 function foo(x) { ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- TweenMax动画库学习(六)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
随机推荐
- ORACLE中RECORD、VARRAY、TABLE的使用具体解释
1 说明 1.1 RECORD 定义记录数据类型. 它类似于C语言中的结构数据类型(STRUCTURE).PL/SQL提供了将几个相关的.分离的.基本数据类型的变量组成一个总 ...
- Linux服务管理(开启关闭防火墙)
1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...
- maven的安装以及查看是否安装成功
Maven安装教程详解 一.准备工作 1.确定电脑上已经成功安装jdk7.0以上版本 2.win10操作系统 3.maven安装包 下载地址:http://maven.apa ...
- mysql数据库补充知识6 完整性约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
- SQL模糊查找
编辑器加载中... /*********************实现模糊查找**************************/ SELECT [UserId] ,[UserName] ,[User ...
- Eclipse部署项目的时候抛异常【Multiple Contexts have a path of "/cdcpm".】
Eclipse部署项目的时候抛异常[Multiple Contexts have a path of "/cdcpm".]重新clean .删除server都不好使.查看一下tom ...
- 计算机网络概述---OSI参考模型
应用层:所有能产生网络流量的程序,例如:qq等,txt记事本没有产生流量,所以不属于应用层: 表示层:在传输之前对应用层的数据进行加工或处理,例如:加密.压缩.传视频时二进制,传文档时ASCII码 等 ...
- 【HackerRank】Halloween party
Change language : Alex is attending a Halloween party with his girlfriend Silvia. At the party, Silv ...
- 【转载】wget 命令用法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:(1)支持断点下传功能:这一点,也是网络蚂蚁和Fl ...
- webstrom上运行node项目配置操作
其实特别简单.... 去webtrom主界面找到下图的按钮,点击 点击之后弹框如下: 点击左上方绿色加号,如下图,点击node.js 点击之后,填写下图中内容: 点击应用,主界面的绿色开始按钮就可以用 ...