1 查询字符串所在的行号
grep -n "xxx" str.txt # -n 打印字符 “xxx” 在文件 “str.txt” 所在的行数前缀
示例:
str.txt
xxx
yyy
zzz
xxx
输入查找命令:grep -n "xxx" str.txt
结果如下:
1:xxx
4:xxx
行号1,4在前,匹配字符串“xxx”在后,两者之间用冒号 “:” 隔开
2 查找字符串首次匹配的行号
grep -n "xxx" str.txt | head -1
结果如下:
1:xxx
同理,查找最后一次匹配的行号
grep -n "xxx" str.txt | tail -1
结果如下:
4:xxx
查找字符串第二次匹配的行号
grep -n "xxx" str.txt | head -2 | tail -1 # 先取出前两行,然后取最后一行
结果如下:
4:xxx
3 提取字符串所在的行号
grep -n "xxx" str.txt | cut -d ":" -f 1
先查询字符串 “xxx” 所在的全部行号,然后利用 cut 命令分割“:”字符,提取第一个字段,即行号
结果如下:
1
4
提取首次匹配的行号
grep -n "xxx" str.txt | head -1 |cut -d ":" -f 1
结果如下:
1
4 比较两次字符串行号变化幅度
两个文件内容: str.txt 和 str2.txt
str.txt
xxx
yyy
zzz
xxx
str2.txt
yyy
xxx
www
zzz
比较行号脚本
catline.sh
#!/bin/bash
rm -rf ret.txt
total=`wc -l $1 | awk '{print $1}'`
echo "total = $total"
num=1
while read line
do
echo $line
ret=`grep -n $line $2 | head -1`
echo $ret
if [ -z $ret ]; then
num2=$total
echo "null num2 = $total"
else
num2=`echo $ret | cut -d ":" -f 1`
echo "num2 = $num2"
fi
echo $num
change=`expr $num2 - $num`
echo "$num2 - $num = $change"
num=`expr $num + 1`
echo "$line=$change" >> ret.txt
done < $1
cat ret.txt
执行脚本命令:
./catline.sh str2.txt str.txt
运行结果如下:
total = 4
yyy
2:yyy
num2 = 2
1
2 - 1 = 1
xxx
1:xxx
num2 = 1
2
1 - 2 = -1
www
null num2 = 4
3
4 - 3 = 1
zzz
3:zzz
num2 = 3
4
3 - 4 = -1
yyy=1
xxx=-1
www=1
zzz=-1
分享到:
相关推荐
01 获取字符串所在的行数 方式一:用grep -n [root@root]# cat test apple bit create delect exe flow good [root@root]# cat test | grep -n exe 5:exe [root@root]# cat test | grep -n exe | awk -F : '{...
本文将详细介绍如何使用Shell命令来查找某字符串在文件中出现的行数。 首先,最常用的命令是`grep`,它能够高效地在文件中搜索指定的字符串。默认情况下,`grep`只会显示匹配到字符串的行。例如,如果我们有一个名...
需要注意的是,`wc -l` 是用来统计行数的,而不是字符串长度,这一点容易混淆。 **示例代码**: ```bash echo "abc" | wc -L ``` 这段代码会输出字符串 `"abc"` 的长度,即3。 #### 方法2: 使用`expr length`命令 ...
在Shell脚本编程中,有时我们需要统计文件或一组文件中的行数。这篇文章主要讲述了8种不同的方法来实现这个目标,分为两大类:获取单个文件的行数和获取特定目录下所有文件的行数。 **获取单个文件行数的方法** 1....
这里有一个简单的方法教你获得一个字符串(不是数组哦)包涵多少行: $text = @' This is some sample text Let's find out the number of lines. '@ $text.Length - $text.Replace(`n,'').Length + 1 从技术上讲...
在Shell脚本编程中,获取字符串的长度是一个常见的任务,特别是在处理文本数据和进行条件判断时。以下将详细介绍七种不同的方法来计算字符串的长度。 **方法一:利用${#str}来获取字符串的长度** 这是最直接且简单...
脚本中用到的关键命令包括`awk`,用于字符串处理,以及`ls -R`,用于列出所有子目录及文件。统计结果会保存在名为`count_output`的文件中,方便后续分析。 脚本的执行流程大致如下: 1. 检查输入参数,确保用户...
在Shell脚本编程中,有时候我们需要统计一个字符串中包含的单词个数。本文将介绍五种不同的方法来实现这一功能,这些方法适用于bash以及其他POSIX兼容的Shell。 ### 方法一:使用`wc`命令 `wc`是"word count"的...
* 使用 :#,# s /SEARCH /REPLACE /g 替换指定行数的字符串 五、环境变量的设置和使用 * 环境变量用于所有用户进程,例如 variable-name=value * 使用 export 命令设置环境变量,例如 export variable-name * 使用 ...
在 Shell 编程中,所有变量都是字符串类型,不需要声明可以直接赋值。例如:a="hello world",然后可以使用echo命令输出变量的值,例如:echo "A is:"; echo $a。 需要注意的是,变量名可能与其他文字混淆,例如:...
grep命令家族章节详细介绍了grep的基本用法、如何引用字符串、选项控制、查询多个文件、行匹配、行数统计、显示非匹配行、大小写敏感设置、结合正则表达式进行高级文本过滤等技巧。还提到了如何使用grep来搜索特定...
* 在 shell 编程中,所有的变量都是字符串组成的 * 不需要对变量进行声明 * 赋值给一个变量的方法: `a="hello world"` * 使用花括号来告诉 shell 我们要打印的是哪个变量: `echo "this is the ${num}nd"` 1.1.4 ...
需要注意的是,上述提到的使用wc命令的方法,虽然可以计算字符串的长度,但通常不建议用于此目的,因为wc命令是用于计算行数、单词数、字节数等的,它会计算字符串中的换行符,所以计算结果可能会比实际字符数多出1...
- `grep -c str filename`:此命令用于计算在文件`filename`中字符串`str`出现的次数。它会返回一个整数结果。 - `grep -o str filename | wc -l`:`-o`选项使得`grep`仅显示匹配的部分,然后通过管道传递给`wc -l...
在 shell 编程中,所有变量都由字符串组成,并且不需要声明。要给一个变量赋值,你可以这么写:代码:变量名=值。在变量名之前加一个 $,就可以取出变量值:代码:#!/bin/sh#对变量赋值:a="hello world"# 打印变量 a ...
7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 ...
7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 ...