Bash怎么逐行读取一个文件

作者&投稿:勾倩 (若有异议请与网页底部的电邮联系)
~

  在 Linux、OSX、 *BSD 或者类 Unix 系统下你可以使用 ​​while..do..done 的 bash 循环来逐行读取一个文件。下面跟着我一起来了解一下在 Linux 或类 UNIX 系统下如何使用 KSH 或 BASH shell 逐行读取一个文件吧。

  Bash逐行读取一个文件 方法

  对于 bash、ksh、 zsh 和其他的 shells 语法如下

  while read -r line; do COMMAND; done < input.file

  通过 -r 选项传递给 read 命令以防止阻止解释其中的反斜杠转义符。

  在 read 命令之前添加 IFS= 选项,来防止首尾的空白字符被去掉。

  while IFS= read -r line; do COMMAND_on $line; done < input.file

  这是更适合人类阅读的语法:

  #!/bin/bashinput="/path/to/txt/file"while IFS= read -r vardo echo "$var"done < "$input"

  示例

  下面是一些例子:

  #!/bin/kshfile="/home/vivek/data.txt"while IFS= read linedo # display $line or do somthing with $line echo "$line"done <"$file"

  在 bash shell 中相同的例子:

  #!/bin/bashfile="/home/vivek/data.txt"while IFS= read -r linedo # display $line or do somthing with $line printf '%s
' "$line"done <"$file"

  你还可以看看这个更好的:

  #!/bin/bashfile="/etc/passwd"while IFS=: read -r f1 f2 f3 f4 f5 f6 f7do # display fields using f1, f2,..,f7 printf 'Username: %s, Shell: %s, Home Dir: %s
' "$f1" "$f7" "$f6"done <"$file"

  示例输出:

  图01:Bash 脚本:读取文件并逐行输出文件Bash 脚本:逐行读取文本文件并创建为 pdf 文件

  我的输入文件如下(faq.txt):

  我的 bash 脚本:

  

  技巧:从 bash 变量中读取

  让我们看看如何在 Debian 或者 Ubuntu Linux 下列出所有安装过的 php 包,请输入:

  示例输出:

  你现在可以从 $list 中看到它们,并安装这些包:

 

  示例输出:

  




杜尔伯特蒙古族自治县15835818387: Bash怎么逐行读取一个文件 -
终娣气滞: 对于 bash、ksh、 zsh 和其他的 shells 语法如下 while read -r line; do COMMAND; done < input.file通过 -r 选项传递给 read 命令以防止阻止解释其中的反斜杠转义符.在 read 命令之前添加 IFS= 选项,来防止首尾的空白字符被去掉.while IFS...

杜尔伯特蒙古族自治县15835818387: bash如何按行读取文件并处理 -
终娣气滞: 用sed行编辑器来完成这个操作, #"a\"在指定的行(后面)添加一行或多行: sed "/^cflags = xxxxxx xxxx xx/a\#-fno"

杜尔伯特蒙古族自治县15835818387: Shell如何实现从文件中的第n行开始读取记录? -
终娣气滞: 好多命令都能实现,head, tail, sed, awk等,比如 awk 'NR > n' datafile.dat | (whaterver you want to do) 不过应该也是一行行读过去,丢掉(或者说不予处理)跳过的行 你要用文件指针,那估计你得自己写个程序了;实现你的功能不难,c程序,几十行足够

杜尔伯特蒙古族自治县15835818387: bash中,我想匹配文件的某行,匹配到该行以后,将该行和下面的几行输出到另外一个文件,怎么实现? -
终娣气滞: 用sed循环匹配输出比较简便,一行代码搞定.sed -n '/EXEC/{:a;p;/;/q;n;ba}' $1 >2稍作说明:-n 禁止自动打印,只有通过命令p打印./EXEC/ 匹配含有EXEC的行.:a 设置跳转标签a/;/q 匹配含有分号的行,匹配到了通过命令q退出sed,不再继...

杜尔伯特蒙古族自治县15835818387: shell如何把多行内容输出到一个文件? -
终娣气滞: 一般日志这种都应该是一行的,你把终端屏幕缩小,并且全屏,然后在看一下.读取文件的每一行内容并输出 写法一:#!/bin/bash while read line do echo $line done 写法二:#!/binbash cat file(待读取的文件) | while read line do echo $line done 写法三:for line in `cat file(待读取的文件)` do echo $line done

杜尔伯特蒙古族自治县15835818387: 请教shell的读取文件内容 -
终娣气滞: 请教shell的读取文件内容 我有个文件如test,内容为:(一行或多行) db_09_11.tgz db_09_12.tgz db_09_13.tgz.....如果一行行读取其中的内容?我的用法是,得到这个test,读取里面的内容(一行或多行),每读一行后就对如读到db_09_11.tgz就进行其它的操作#!/bin/bash cat test | while read line do echo $line done

杜尔伯特蒙古族自治县15835818387: 求一句话bash代码:读取一个文件,如果内容为0,则将100写回原文件,反之将0写回. -
终娣气滞: [ "`cat file`" -eq 0 ] && echo 100 >file || echo 0 > file

杜尔伯特蒙古族自治县15835818387: 如何用shell脚本读取文件的内容 -
终娣气滞: #!/bin/sh for i in `cat abc.txt` do copy -f /old/$i /new &> /dev/null done

杜尔伯特蒙古族自治县15835818387: 如何使用bash shell 实现连个文件的内容对比 -
终娣气滞: 1>Diff命令的功能 Linux中Diff命令的功能为逐行比较两个文本文件,列出其不同之处.它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序.2>语法 diff [options] file1 file2 该命令告诉用户,为了使两...

杜尔伯特蒙古族自治县15835818387: shell编程用while循环怎么把文件信息逐行显示出来 -
终娣气滞: #!/bin/bash while read line;do echo $line done

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网