查看“Shell遍历文件的每一行”的源代码
←
Shell遍历文件的每一行
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
[[category:shell]] =原因= 由于使用for来读入文件里的行时,会自动把空格和换行符作为一样分隔符,因为当行里有空格的时候,输出的结果会很乱,所以…… =while 循环= <pre> while read -r line do echo $line done < filename While循环中read命令从标准输入中读取一行,并将内容保存到变量line中。在这里,-r选项保证读入的内容是原始的内容,意味着反斜杠转义的行为不会发生。输入重定向操作符< file打开并读取文件file,然后将它作为read命令的标准输入 今天遇到一个问题弄了好久才搞明白:我想在循环中动态链接字符串,代码如下: for line in `cat filename` do echo ${line}XXYY done 就是在每一次循环过程中给取出来的字符串后面添加“XXYY”字符,但是程序就是运行不出来正确的结果。 后来发现是因为我的文件是才Window下生产的,在Linux下读取这样的文件由于换行符的不同会导致程序运行不出来正确的结果。 解决办法:在Linux安装dos2unix小工具,经过该工具转化以后的文件再进行读取就没有问题了 </pre> =得到一个批量删除 redis 脚本= <pre> cat r del hello_coin_limit_config_1186883712095948803_1 [root@prod-hello-nginx02 evan]# bash f del hello_coin_limit_config_1186883712095948803_1 如何批量 执行 evan@bsd-latop:~/test % cat r del hello_coin_limit_config_1186883712095948803_1 del hello_coin_liiiiiidsafasjfig_1186883712095948803_1 evan@bsd-latop:~/test % cat ff cat $1 | while read line #cat r | while read line do echo $line done evan@bsd-latop:~/test % bash ff r del hello_coin_limit_config_1186883712095948803_1 del hello_coin_liiiiiidsafasjfig_1186883712095948803_1 cat $1 | while read line #cat r | while read line do echo $line done 最终得到一个批量删除redis key 脚本 #!/bin/bash cat $1 | while read line do redis-cli -c -h 172.31.22.218 -p 7000 -a hello $line redis-cli -c -h 172.31.22.218 -p 7001 -a hello $line redis-cli -c -h 172.31.16.135 -p 7002 -a hello $line redis-cli -c -h 172.31.16.135 -p 7003 -a hello $line redis-cli -c -h 172.31.23.43 -p 7004 -a hello $line redis-cli -c -h 172.31.23.43 -p 7005 -a hello $line done </pre> =把所有目录权限修改为755,所有文件为644= <pre> 再举个实际点的例子(把所有目录权限修改为755,所有文件为644): # find ./ -type f>filelist # find ./ -type d>dirlist # cat dirlist |while read i; do chmod 755 "${i}"; done # cat filelist |while read i; do chmod 644 "${i}"; done </pre> =see also= [https://blog.csdn.net/jk110333/article/details/7690868 如上面不行就参考这个shell实现:读文件一行,sed操作文件某一行] =其它参考= <pre> 循环出每一行数据,再分割每个字符 做处理 cat file_name | while read line do echo $line; array=(${line///t/ }) appkey=${array[0]} file_name=${array[1]} done; 原文链接:https://blog.csdn.net/yan88888888888888888/article/details/103298561 </pre>
返回至
Shell遍历文件的每一行
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
我的导航
关于我
shell
python
ops
linuxchina.net
blog.linuxchina
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息