`
nanjingjiangbiao_T
  • 浏览: 2688776 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

shell 字符串出现的行数

 
阅读更多

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


分享到:
评论

相关推荐

    Linux shell 获得字符串所在行数及位置的方法

    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查找某字符串在某文件中出现行数的方法

    本文将详细介绍如何使用Shell命令来查找某字符串在文件中出现的行数。 首先,最常用的命令是`grep`,它能够高效地在文件中搜索指定的字符串。默认情况下,`grep`只会显示匹配到字符串的行。例如,如果我们有一个名...

    Shell脚本中计算字符串长度的5种方法

    需要注意的是,`wc -l` 是用来统计行数的,而不是字符串长度,这一点容易混淆。 **示例代码**: ```bash echo "abc" | wc -L ``` 这段代码会输出字符串 `"abc"` 的长度,即3。 #### 方法2: 使用`expr length`命令 ...

    Shell脚本统计文件行数的8种方法

    在Shell脚本编程中,有时我们需要统计文件或一组文件中的行数。这篇文章主要讲述了8种不同的方法来实现这个目标,分为两大类:获取单个文件的行数和获取特定目录下所有文件的行数。 **获取单个文件行数的方法** 1....

    Powershell小技巧之获取字符串的行数

    这里有一个简单的方法教你获得一个字符串(不是数组哦)包涵多少行: $text = @' This is some sample text Let's find out the number of lines. '@ $text.Length - $text.Replace(`n,'').Length + 1 从技术上讲...

    Shell获取字符串长度的多种方法总结

    在Shell脚本编程中,获取字符串的长度是一个常见的任务,特别是在处理文本数据和进行条件判断时。以下将详细介绍七种不同的方法来计算字符串的长度。 **方法一:利用${#str}来获取字符串的长度** 这是最直接且简单...

    shell 命令统计代码行数的简单代码

    脚本中用到的关键命令包括`awk`,用于字符串处理,以及`ls -R`,用于列出所有子目录及文件。统计结果会保存在名为`count_output`的文件中,方便后续分析。 脚本的执行流程大致如下: 1. 检查输入参数,确保用户...

    Shell中统计字符串中单词的个数的几种方法

    在Shell脚本编程中,有时候我们需要统计一个字符串中包含的单词个数。本文将介绍五种不同的方法来实现这一功能,这些方法适用于bash以及其他POSIX兼容的Shell。 ### 方法一:使用`wc`命令 `wc`是"word count"的...

    shell脚本精华总结

    * 使用 :#,# s /SEARCH /REPLACE /g 替换指定行数的字符串 五、环境变量的设置和使用 * 环境变量用于所有用户进程,例如 variable-name=value * 使用 export 命令设置环境变量,例如 export variable-name * 使用 ...

    LinuxShell编程基础教程.pdf

    在 Shell 编程中,所有变量都是字符串类型,不需要声明可以直接赋值。例如:a="hello world",然后可以使用echo命令输出变量的值,例如:echo "A is:"; echo $a。 需要注意的是,变量名可能与其他文字混淆,例如:...

    LINUX与UNIX Shell

    grep命令家族章节详细介绍了grep的基本用法、如何引用字符串、选项控制、查询多个文件、行匹配、行数统计、显示非匹配行、大小写敏感设置、结合正则表达式进行高级文本过滤等技巧。还提到了如何使用grep来搜索特定...

    Linux-shell脚本全面学习.pdf

    * 在 shell 编程中,所有的变量都是字符串组成的 * 不需要对变量进行声明 * 赋值给一个变量的方法: `a="hello world"` * 使用花括号来告诉 shell 我们要打印的是哪个变量: `echo "this is the ${num}nd"` 1.1.4 ...

    js 判断计算字符串长度/判断空的简单方法

    需要注意的是,上述提到的使用wc命令的方法,虽然可以计算字符串的长度,但通常不建议用于此目的,因为wc命令是用于计算行数、单词数、字节数等的,它会计算字符串中的换行符,所以计算结果可能会比实际字符数多出1...

    整理Linux中字符串的相关操作技巧

    - `grep -c str filename`:此命令用于计算在文件`filename`中字符串`str`出现的次数。它会返回一个整数结果。 - `grep -o str filename | wc -l`:`-o`选项使得`grep`仅显示匹配的部分,然后通过管道传递给`wc -l...

    shell编程电子书.docx

    在 shell 编程中,所有变量都由字符串组成,并且不需要声明。要给一个变量赋值,你可以这么写:代码:变量名=值。在变量名之前加一个 $,就可以取出变量值:代码:#!/bin/sh#对变量赋值:a="hello world"# 打印变量 a ...

    LINUX与UNIX SHELL编程指南(很全)

    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 ...

    shell 编程指南pdf

    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 ...

Global site tag (gtag.js) - Google Analytics