Shell脚本对文件中的行、单词、字符进行迭代输出示例

在进行文本文件进行处理时,对文件件中的行、单词、字符进行迭代和遍历是非常常用的操作。而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行、单词、和字符进行迭代的基本方法。

废话不多说,马上来看看怎么样实现吧。

1、迭代文中的每一行

使用while循环从标准输入中读取,因为要在标准输入中读取,就要对文件进行重定向,使它重定向到stdin中,代码如下:

代码如下:

while read line; 
do 
echo $line; 
done < file.txt

代码的第一行从stdin中读取一行,而stdin的来源为file.txt,因为最后一行用数据流重定向,把file.txt的内容重定向到了stdin。

2、迭代一行中的每一个单词

我们可以用for循环来迭代一行中的单词,代码如下:

代码如下:

read line; 
for word in $line; 
do 
echo $word; 
done

代码的第一行,从stdin中读取一行,然后用for循环迭代一行中的所有单词,并输出,真是非常简单实用。

3、迭代一个单词中的每一个字符

从单词中迭代每一个字符,可以说是这三种迭代中最困难的一种,因为从单词中提取字符需要一定的技巧,其方法如下:

利用for循环对变量i进行迭代,迭代范围从0到字符的长度-1。那如何取出单词中的字符呢?我们可以借助一个特殊的表达式来取出单词中的第i个字母,${string:start_position:count_of_characters},它的意思是,返回字符串string中,从第start_position起的count_of_characters个字符组成的字串,对于迭代一个单词中的第一个字符,当然是从string的第i个字符起,返回长度为1的子串,这就是子串提取技术。所以代码如下:

代码如下:

for((i=0; i<${#word}; ++i)) 
do 
echo ${word:i:1}; 
done

注:${#word}返回变量word的值的长度,即单词的长度。

(0)

相关推荐

  • 远程linux xshell下输出中文乱码解决方法

    使用xshell登录中文版CentOS或者redhat时,在xshell下如果输出的是中文的话可能会显示乱码,通过如下办法可以有效的解决乱码问题 linux中文乱码解决方法如下: 复制代码 代码如下: [root@localhost ~]# cd /etc/sysconfig/ [root@localhost sysconfig]# cp i18n i18n.bak #备份i18n文件 [root@localhost sysconfig]# echo "" >i18n [root

  • shell学习之printf命令格式化输出语句

    简介 printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同. 注意:printf 由 POSIX 标准所定义,移植性要比 echo 好. 如同 echo 命令,printf 命令也可以输出简单的字符串: $printf "Hello, Shell\n" Hello, Shell $ printf 不像 echo 那样会自动换行,必须显式添加换行符(\n). printf 命令的语法: printf  form

  • shell脚本echo输出不换行功能增强实例

    这是第8/101个脚本 There are as many ways to solve this quirky echo problem as there are pages in this book. One of my favorites is very succinct: function echon { echo "$*" | awk '{ printf "%s" $0 }' } You may prefer to avoid the overhead in

  • linux shell的输出效果修改方法(界面颜色)

    文本终端的颜色可以使用"ANSI非常规字符序列"来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"."e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器."\033"引导非常规字符序列."m"意味着

  • 一个简单的转换输出的shell脚本代码

    一个简单的转换输出的shell脚本,从健盘输入 a,b,c 这种格式  输出如下格式:a c 复制代码 代码如下: #!/bin/bashread -p '请输入:'echo $REPLY >.tmp5count=`grep -o ',' .tmp5 |wc -l`echo $countcount_=$((count+1))i=1:>.tmp1while [ $i -le $count_ ]do   echo $i   awk -F, -v j="$i"  '{print$

  • 关于shell命令的定向输出 2&gt;&1

    mycommand >mylog.txt 2>&1 应该是最经典的用法了. 命令的结果可以通过"%>"的形式来定向输出,%表示文件描述符:1为标准输出stdout.2为标准错误stderr.系统默认%值是1,也就是"1>",而1>可以简写为>,也就是默认为>.stdout的默认目标是终端,stderr的默认目标为也是终端.我们在批处理中执行: echo text >result.txt ,我们就可以在屏幕上会看

  • 神奇的shell命令行输入与输出功能介绍

    标准输入/输出和重定向,Linux发行版Fedora Core Linux,而Red Hat公司原来Red Hat Linux的开发团队也将继续参与这一发行版本的开发工作. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕.进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中.

  • 用shell命令读取与输出数据的代码

    shell脚本读取数据有以下几种方式:1.键盘输入,默认2.从文件中读取3.通过管道命令传递 echo的功能:\c :不换行\f :进纸\t :跳格\n :换行\表示转义,例如:"\"/dev/rmt0"\"翻译为,"/dev/rmt0" read:从键盘或文件的某一行文本中读取信息,并将其赋给一个变量. 复制代码 代码如下: [jb51]/>read namehello i am a regular user[jb51]/>echo

  • linux c程序中获取shell脚本输出的实现方法

    1. 前言Unix界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部命令ping后,如果执行失败,我们希望得到p

  • Shell脚本对文件中的行、单词、字符进行迭代输出示例

    在进行文本文件进行处理时,对文件件中的行.单词.字符进行迭代和遍历是非常常用的操作.而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行.单词.和字符进行迭代的基本方法. 废话不多说,马上来看看怎么样实现吧. 1.迭代文中的每一行 使用while循环从标准输入中读取,因为要在标准输入中读取,就要对文件进行重定向,使它重定向到stdin中,代码如下: 复制代码 代码如下: while read line;  do  echo $line;  done < file.t

  • Shell脚本从文件中逐行读取内容的几种方法实例

    从文件逐行读取数据的方法有两种,一种是在while循环或until循环中使用read命令,通过文件描述符一行一行的读取文件内容:另一种是在for循环中使用cat <filename>来读取文件的内容. 1.使用for循环从文件中逐行读取内容:在默认情况现下此方法是逐个单词的读取文件内容,因为使用这种方法读取文件时,他使用环境变量IFS的值作为分隔符,由于IFS的默认值是"<space/空格>""<tab/制表符>""&l

  • 使用Shell 脚本实现每隔100行插入一条记录且记录第一列包含行号其他列不变

    1.例子:每隔100行插入一条记录,并且此条记录的第一列包含行号,其他列与第一行相同 #!/bin/sh var="00001" # 变量 cat a.txt|awk 'NR==1'|while read line # 获取文件第一行 do #echo "$line" result=`echo "$line"|cut -f2-` # 默认以tab分割,获取第二列至最后一列 cat a.txt|awk 'NR%100==0{printf("

  • Python如何脚本过滤文件中的注释

    确保对模块, 函数, 方法和行内注释使用正确的风格,Python中的注释有单行注释和多行注释.如果希望去除文件中所有注释,如何做呢? Python中的注释: Python中单行注释以 # 开头,例如: # 这是一个注释 print("Hello, World!") 多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如: #!/usr/bin/python3 ''' 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用

  • Shell脚本之文件批量创建与修改的简单方法

    一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip,文件名除了_hcip固定字符串外,文件名还包含8个小写随机的字符. 3.创建的12个文件后缀名改为大写的PY,固定字符串改为_hcie 二.脚本内容 #!/bin/bash ########################################################## #File Name:create_file.sh #Version:V1.0 #Aurhor

  • 使用shell脚本判断文件后缀的方法实例

    目录 shell脚本判断文件后缀 附shell提取文件后缀名,并判断其是否为特定字符串 总结 shell脚本判断文件后缀 有时候需要判断文件名后缀来区分文件类型,进而进行不同的操作.以下是获取文件名后缀和文件名前缀的两个函数,由于shell脚本函数只能返回0-255,为了将结果返回,就直接使用echo输出,可以用$()进行捕获. #!/bin/bash # ----------------------------------------------------------------------

  • shell脚本传参中包含有空格的参数

    目录 问题描述 原因分析 解决方案 拓展 传递给函数的某个参数含有空格 问题描述 调用并传参数给其他shell脚本,传的参数带有空格,被调用的shell脚本只取了这个参数的第一个单词. 代码如下 # 传参脚本 test_pre.sh [wqf@b1i10 test]$ cat test_pre.sh binFilePath="/apps/test" logpath="/apps/test" std_time="2023-01-31 18:00:00&quo

  • 利用shell脚本遍历文件夹内所有的文件并作整理统计的方法

    环境: Ubuntu下采用shell脚本实现 案例简述: 文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为数字,则根据数字的大小统计该文件夹内文件在各个数据段的数量. 1.这里写一个函数,实现对文件夹内所有文件名的读取,采用的方法是递归! #!/bin/bash #folder="./test" function readfile () { #这里`为esc下面的按键符号 for file

  • java实现找出两个文件中相同的单词(两种方法)

    java实现找出两个文件中相同的单词,具体代码如下所示: package com.zy.DesignPrinciples.singleresponsibility; import javax.print.DocFlavor; import java.io.BufferedReader; import java.io.FileReader; import java.util.HashSet; /** * @ClassName: ReaderComplete * @Author: Tiger * @

  • python筛选出两个文件中重复行的方法

    本文实例为大家分享了python脚本筛选出两个文件中重复的行数,供大家参考,具体内容如下 ''' 查找A文件中,与B文件中内容不重复的内容 ''' #!usr/bin/python import sys import os ''' 字符串查找函数,使用二分查找法在列表中进行查询 ''' def binarySearch(value, lines): right = len(lines) - 1 left = 0 a = value.strip() while left <= right: mid

随机推荐