【linux】打印字符串中指定行
只打印第10行 关键在于当行数小于10时不输出。
用 head tail的关键问题是当行数小于10的时候用 head -n 10 只会打出前面的行,再用tail就错了。
所以要知道源文件一共有多少行。用wc
wc -l 显示文件一共有多少行 -w列出有多少字(英文单字) -m列出有多少字符
但是得到了这个数字怎么用呢,需要一个变量存储行数,然后用if语句处理
加:
可以用 tail -n +10 表示从第10行开始显示,这样如果没有第10行就会显示空了
下面是多种答案:
num=$(cat file.txt|wc -l)
if (( $num > 9 )); then
cat file.txt|head -|tail -
fi
STARTING=; NLINES=; cat file.txt | tail -n+${STARTING} | head -n${NLINES}
LINE_NUM=`head -n file.txt | wc -l` if (( $LINE_NUM == "" )); then
head -n file.txt | tail -n
else
echo ""
fi
# Solution
cnt=
while read line && [ $cnt -le ]; do
let 'cnt = cnt + 1'
if [ $cnt -eq ]; then
echo $line
exit
fi
done < file.txt # Solution
awk 'FNR == 10 {print }' file.txt
# OR
awk 'NR == 10' file.txt # Solution
sed -n 10p file.txt # Solution
tail -n+ file.txt|head -
困惑:
①用if[ ]就出错??
②不用变量,直接写if (( `cat file.txt|wc -l` == 10 )) 也出错??
【linux】打印字符串中指定行的更多相关文章
- Linux c字符串中不可打印字符转换成16进制
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...
- Excel中如何截取字符串中指定字符后的部分字符
1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...
- 1231: 删除字符串中指定的字符(Java)
WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...
- 【练习】数据移动---parfile导出表中指定行:
要求: ①创建存放数据的文件: ②使用默认的bad文件生成方式: ③使用truncate选项方式. 1.准备条件: [oracle@host03 ~]$ mkdir datadump [oracle@ ...
- python3 替换字符串中指定位置字符
大家都知道字符串在python中是不可变数据类型,那么我们如何替换字符串中指定位置的字符呢? 字符串转换列表替换并转换解决: def replace_char(string,char,index): ...
- mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)
转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的 ...
- .NET获取Html字符串中指定标签的指定属性的值
using System.Text; using System.Text.RegularExpressions; //以上为要用到的命名空间 /// <summary> /// 获取Htm ...
- String substring(int start,int end)截取当前字符串中指定范围内的字符串
package seday01;/** * String substring(int start,int end) * 截取当前字符串中指定范围内的字符串. * java api有一个特点:通常用两个 ...
- python 统计字符串中指定字符出现次数的方法
python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...
随机推荐
- GRE协议学习与练习
通用路由封装(英语:Generic Routing Encapsulation,缩写为GRE),一种隧道协议,可以在虚拟点对点链路中封装多种网络层协议.由思科系统开发 以下是GRE协议的简单练习 网络 ...
- EMVTag系列3《持卡人基本信息数据》
Ø 9F61 持卡人证件号 L:2–26 R(需求):数据应存在,在读应用数据过程中,终端不检查: (PBOC2.0第五部分中规定)芯片中持卡人姓名 5F20与持卡人姓名扩展9F0B只能使用一 ...
- EMVTag系列17《9F66 终端交易属性》
字节:1 8 1 – 支持非接触磁条 (MSD) 0– 不支持非接触磁条 (MSD) 7 1 – 支持非接触PBOC 0– 不支持非接触PBOC 6 1 – 支持非接触qPBOC 0 ...
- String.split()方法你可能不知道的一面
一.问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void splitTest() { String str = ...
- Boolean.parseBoolean("true") 和 Boolean.getBoolean("true");的区别及用法
正确用法:boolean repeatIndicator = Boolean.valueOf("true").booleanValue();或者也可以使用Boolean.parse ...
- 【EF Code First】 一对一、一对多的多重关系配置
这里使用相册Album和图片Picture的关系做示例 1,Album与Picture最基本的关系是1-n(一个相册可以有多张图片) 这时Album.Picture实体类可以这么定义 /// < ...
- Visio编辑数据库模型列
Visio编辑数据库模型列:邮件group->Open实体,进入实体属性编辑界面,按回车可以添加.
- 引用类型a=b
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); Cache["Key ...
- Ubuntu系统安装配置Pintos和Bochs
Ubuntu系统安装配置 Pintos 和 Bochs 安装过程 首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写.可见博主的另一篇博客http:// ...
- c++实例化对象
今天看到c++实例化对象,有点懵了.Activity_Log the_log (theLogPtr, Tree->GetBranch());这是那一段小代码,开始没看懂.java看习惯了总喜欢n ...