linux文本分割符怎么显示,Linux自定义分隔符IFS引发的文本处理问题
需求是检查指定应用的某些配置所以就写了个脚本,数据文件的内容是这样的:应用名称|IP|端口 多个IP用空格,这样可以生成数组。这个文件的数据是通过部署平台的API获取后自己组装的。
#!/bin/bash
CONFIG_PATH="temp.txt"
for line in $(cat $CONFIG_PATH); do
APPNAME=$(echo $line | awk -F "|" '{print $1}')
IPARRAY=($(echo $line | awk -F "|" '{print $2}'))
PORT=$(echo $line | awk -F "|" '{print $3}')
echo $APPNAME
for IP in ${IPARRAY[@]}; do
echo $IP
done
done
脚本运行之后结果去不正确,因为在脚本中并没有输出端口
从要处理的文件上看本身没有问题,也没有特殊字符。上面的AWK语句在命令行中都可以正常执行结果也是正确的。改变一下脚本输出看看
#!/bin/bash
CONFIG_PATH="temp.txt"
for line in $(cat $CONFIG_PATH); do
APPNAME=$(echo $line | awk -F "|" '{print $1}')
IPARRAY=($(echo $line | awk -F "|" '{print $2}'))
PORT=$(echo $line | awk -F "|" '{print $3}')
echo $APPNAME
echo $IPARRAY
echo $PORT
# for IP in ${IPARRAY[@]}; do
# echo $IP
# done
done
但看到这样的结果肯定不对,那么就很容易联想到分隔符问题。下面看这样一个简单的例子可能更加容易明白
这里明明是一行,我想输出的也是一行可是输出了三行,唯一的可能就是shell认为换行了。
bash shell默认将空格、制表符、换行符看做分隔符遇到这些字符shell会认为这个字符后面的是一个新的字符。所以上面就分成了3行输出。但有时候我们希望自定义这种分隔符来处理比如空格之类的东西,这就需要通过改变当前shell执行环境的分隔符定义。
再次执行
针对最初的例子我们也需要这样修改
#!/bin/bash
CONFIG_PATH="temp.txt"
IFS_OLD=$IFS # 保存当前IFS
IFS=$'\n' # 定义新的分隔符
for line in $(cat $CONFIG_PATH); do
APPNAME=$(echo $line | awk -F "|" '{print $1}')
IPARRAY=($(echo $line | awk -F "|" '{print $2}'))
PORT=$(echo $line | awk -F "|" '{print $3}')
echo $APPNAME
echo $IPARRAY
echo $PORT
# for IP in ${IPARRAY[@]}; do
# echo $IP
# done
done
IFS=$IFS_OLD # 恢复默认的IFS
【C/C++】Linux下system()函数引发的错误
http://my.oschina.net/renhc/blog/54582 [C/C++]Linux下system()函数引发的错误 恋恋美食 恋恋美食 发布时间: 2012/04/21 11:3 ...
重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
Linux自定义命令
linux自定义命令,就是给当前命令取个别名.比如:ls 列出当前的文件,rm + 文件名 就能删除该文件,如何自定义命令,可以使用alias比如:alias gobin='cd /opt/tomca ...
deepin linux 学习笔记(二)——文本编辑器
目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...
palacehoder的自定义样式【输入框input /文本域textarea】
7.palacehoder的自定义样式[输入框input /文本域textarea] 因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和texta ...
Linux基础学习(5)--文本编辑器Vim
第五章——文本编辑器Vim 一. Vim常用操作 1.Vim简介: Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑. ...
linux 自定义信号
从来没试过linux自定义信号,查了下,说是系统只提供了SIGUSR1和SIGUSR2两个,就两个够吗?更要命的是如果要自定义信号如#define SIG_MYSIG ....的话要改内核才行,哥 ...
润乾V4导出TXT时自定义分隔符
◆ 背景说明 报表中,导出text时,默认没有分隔符:应用中对导出Text,希望能自定义分隔符.在tag中定义了 textDataSeparator属性,让用户在导出Text时自定义分隔符,从而 ...
Linux命令行下的vim文本编辑器
Linux命令行下的vim文本编辑器 下面这个网站的地址讲解的非成分清楚!!!! http://blog.csdn.net/niushuai666/article/details/7275406 学习 ...
随机推荐
SharePoint 2103 Check user permission on list
一.需求: check user 对SharePoint list 的permission 代码如下: private static string GetListPermission(SPList l ...
Eclipse10个最有用的快捷键[From: Internet]
1. ctrl+shift+r:打开资源这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml ...
Geo-Fence
转自:http://blog.jobbole.com/86633/ 地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界,当手机进入.离开某个特定地理区域,或 ...
[置顶] Android系统移植与调试之------->;如何修改Android设备添加3G上网功能
1.首先先来看一下修改前后的效果对比图 step1.插上3G设备前 step2.插上3G设备后,获取信号中.... step3.插上3G设备后,获取到信号 step4.使用3G信号浏览网页 2.下面讲 ...
deal with 'non-admin area' warn
We usually use the follow code to delete product in Magento $product = Mage::getSingleton('catalog/p ...
jQuery html text val方法使用
jQuery html text val方法使用
4. [mmc subsystem] mmc core(第四章)——host模块说明
零.说明 对应代码drivers/mmc/core/host.c,drivers/mmc/core/host.h. 为底层host controller driver实现mmc host的申请以及注册 ...
实验五 <;FBG>;团队亮相
一.队名:FBG 二.队员: 201571030321:马玉婷 (小队长) 201571030317:马美玲 201571030331:益西卓嘎 三.队员风采: 201571030321:马玉婷 风格 ...
这13个开源GIS软件,你了解几个?【转】
泰伯网有看点的空间地理信息资讯都在这,你还在等什么? 这些开源GIS软件,你了解几个?本文内容部分来源于一份罗列了关于GIS软件应用的文章,笔者将其编译整合. 地理信息系统(Geographic In ...
js中的值类型和引用类型的区别
1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(String).数值(Number).布尔值(Boolean).Undefined.Null (这5种基本数据类型是按 ...
linux文本分割符怎么显示,Linux自定义分隔符IFS引发的文本处理问题相关推荐
- linux下分割文件的方法,linux系统下分割大文件的方法有哪些
学习啦小编我在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取.有时,需要传输20gb的大文件到另一台服务器,也需要把它分割成多个文件,这样便于 ...
- Linux命令备忘录: jobs 显示Linux中的任务列表及任务状态命令
Linux jobs命令用法详解:显示Linux中的任务列表及任务状态命令 jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务.该命令可以显示任务号及其对应的进程号.其中,任务号 ...
- android多行文字正中间显示,Android自定义View五(绘制文本大小、多行多列居中)...
一.绘制文本 在Canvas中绘制文本,使用前面文章的坐标系 1.drawText的几种方法 public void drawText (String text, float x, float y, ...
- linux脚本中空格怎么显示,linux vim 显示空格
Vim是从vi发展而来的文本编辑器,可以用颜色或底线等方式来显示一些特殊的信息.Vim是Linux中必不可少的工具,搭建网站修改配置文件时经常用到.本教程介绍Vim的模式和常用操作. 背景信息 Vim ...
- linux窗口叉号不显示,linux因勿删或误操作导致登录界面异常,命令无法使用,显示/bin/bash:No such file or directory...
一.故障现象 1.用secure CRT连接服务器时显示: /bin/bash:No such file or directory 翻译成中文是:没有此类文件或目录 2.直接登录服务器执行命令时显示: ...
- Linux添加网站后无法显示,Linux:SElinux导致网站无法访问
通过更改SElinux状态可以判断出,当SElinux处于关闭状态时,网站内容访问正常. [root@master1-192-168-117-18 ~]# setenforce 0 [root@mas ...
- linux 文件 16进制显示,linux 16进制 产看文件
hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字节为单 ...
- linux替换换行符 n r,Linux Sed命令详解+如何替换换行符\n(很多面试问道)
Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读 ...
- linux双显卡分屏显示,linux NVIDIA显卡双屏扩展
1. 进入命令行模式 init3 2. 以root用户上传显卡驱动NVIDIA-Linux-x86-260.19.21.run(下载地址:http://us.download.nvidia.com/X ...
最新文章
- 射频放大器芯片3阶截点计算与芯片选择
- linux统计分析命令datamash
- nginx:模块讲解
- 记:第一次更新服务器CUDA和GPU驱动
- 在 JQuery Mobile 中实现瀑布流图库布局
- 转:RMAN 备份与恢复 实例
- angularjs 表单校验
- 如何写一个Jquery 的Plugin插件
- php点击按钮跳转页面heeader,php - 通过FPDF生成后插入水印并打印PDF - SO中文参考 - www.soinside.com...
- Java工具包工具类,java.util.concurrent 包下工具类的使用
- C++ Memory_order的理解
- Codeforces Round #757 (Div. 2)ABCD1
- sed截取连接数升高时的慢日志
- 深度学习在NLP领域的发展(一)
- 初步分析AxProtector V6.40.226.200Dotnet加壳与脱壳
- 将文件夹下的多个文件的内容合并到一个文件中
- Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录
- 还在找各种便签软件?Windows10自带的便签足矣
- Python 下载视频出错 you-get: [error] oops, something went wrong.
- 如何查找和掌握所有YouTube订阅
热门文章
- R6025 pure virtual function call
- 详解2020数学建模国赛A题炉温曲线
- 自用的把自己微信和支付宝收款信息回调到服务器的安卓app
- pcb成型板aoi检测_【技术】7种PCB板常用检测方法
- Java之数组的定义格式,【默认值规则】,Java内存划分5大区,面向对象类的基本定义和对象的使用,private和this关键字,类的构造方法,标准类的组成部分。
- 微信小程序同时上传视频和图片(支持多选)
- php封装协议查看zip,支持的协议和封装协议
- 音乐播放器软件的设计与实现
- 新诛仙手游服务器维护,诛仙手游10月17日更新维护公告 诛仙手游更新内容汇总...
- 职场小技能——如何画好流程图?