linux显示分隔符

您所在的位置:网站首页 linux显示制表符 linux显示分隔符

linux显示分隔符

#linux显示分隔符| 来源: 网络整理| 查看: 265

需求是检查指定应用的某些配置所以就写了个脚本,数据文件的内容是这样的:应用名称|IP|端口    多个IP用空格,这样可以生成数组。这个文件的数据是通过部署平台的API获取后自己组装的。

559c1ad256a7886440af5c963ee04f1f.png

#!/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

脚本运行之后结果去不正确,因为在脚本中并没有输出端口

ae6ff59a334d5afe3c67d6a837e03587.png

从要处理的文件上看本身没有问题,也没有特殊字符。上面的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

2bfd120abec86c56799744869409e492.png

但看到这样的结果肯定不对,那么就很容易联想到分隔符问题。下面看这样一个简单的例子可能更加容易明白

7c026840f737497ce12d0643495a15f6.png

这里明明是一行,我想输出的也是一行可是输出了三行,唯一的可能就是shell认为换行了。

bash shell默认将空格、制表符、换行符看做分隔符遇到这些字符shell会认为这个字符后面的是一个新的字符。所以上面就分成了3行输出。但有时候我们希望自定义这种分隔符来处理比如空格之类的东西,这就需要通过改变当前shell执行环境的分隔符定义。

9bda7f108caaff304a4d427dddeace08.png

再次执行

0808e479b43be47d72bacd036d58d694.png

针对最初的例子我们也需要这样修改

#!/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

188fa70a52e2f5836369e9f15dce746e.png

【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种基本数据类型是按 ...



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3