永发信息网

shell编程,我多次要cat的结果,我把结果存入变量var,但打印后$var怎么没有了换行符号

答案:3  悬赏:70  手机版
解决时间 2021-02-25 05:50
多次要用到cat IBusinessLog.2012-12-01.gz |grep "resultNo = $num"这个结果,我发结果存到变量中,var=`cat IBusinessLog.2012-12-01.gz |grep "resultNo = $num"`,但输入的变量没有换行符号,echo $echo,怎么办?
最佳答案
echo $var显示没有换行符,使用:

echo "$var"就会看到换行符,例如:


全部回答
换行方式 在早期的打印机时代,开始新的一行要占用两个字符的时间。如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点。解决这个问题的办法就是,用两个字符:一个字符来移到第一列,另一个字符来新增一行。计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的意见。unix人认为在到达一行的结尾时新增一行 (lf),而mac人则认同 (cr)的解决办法,ms则坚持古老的 (crlf)的方法。这就意味着如果你将一个文件从一个系统转移到另一个系统,就面临着回车换行的问题。而vim编辑器则会自动的认出这种文件格式方面的区别,并做出相应处理。 fileformats选项,用于处理文件格式问题。以下命令,告诉vim将unix文件格式做为第一选择,而将ms-dos的文件格式做为第二选择: :set fileformats=unix,dos 检测到的文件格式会被存放在fileformat选项中,我们可以用以下命令来查询: :set fileformat? 我们还可以利用fileformat选项,来转换种文件格式。例如,使用以下命令将名为readme.txt的ms-dos格式的文件,转换为unix格式的文件。 :set fileformat=unix 在默认情况下,vim认为文件是由行组成的,并且文件最后一行是以为结束符的。如果你想设置文件以结束符结尾,则可以用以下命令: :set endofline 如果你想设置文件不以结束符来结尾,则可以使用以下命令: :set noendofline 显示换行 如果你使用以下命令进入,那么就可以清楚的看到以“$”表示的换行符和以“^i”表示的制表符。 :set list 你可以使用以下命令退出: :set nolist 删除换行 可以用以下命令删除换行符: :%s/\n//g 可以用以下命令删除dos文件中的回车符“^m”: :%s/\r//g 可以用以下命令转换dos回车符“^m”为真正的换行符: :%s/\r/\r/g 可以用以下命令删除行尾的空格以及dos回车符。它没有使用“/”字符作为替换命令各个参数间的分隔符,而是使用了“#”字符。命令还使用了“\?”正则表达式,用来匹配它前面出现的字符0次或1次。 :%s#\s*\r\?$## 可以用以下命令删除三行空行: :%s/^\n\{3}// 可以用以下命令将连续的两个空行替换成一个空行: :%s/\n\n/\r/g 自动换行 在默认情况下,vim是不会自动换行的,也就是说我们需要自己决定回车的位置。但是我们也可以通过指定textwidth选项,让vim自动在指定位置换行。例如,使用以下命令指定在30列时自动换行。由于在遇到空格时才会自动换行,所以换行的精确位置可能会小于你指定的列宽。 :set textwidth=29 而以下命令告诉vim从右面算起当达到10个字符的空格时要换行: :set wrapmargin=10 在指定了文本宽度的情况下,当我们将一行中的前几个文字删掉时,vim并不会将后面行中的文本移动上来,而是形成了一些长短不一的段落,这样看起来不是很好。可以有几种方法处理这个问题: 一种方法是,在可视化模式下选中这些文本,然后用gp命令来格式化选中的段落。另一种方法是,使用gqmotion命令来完成格式。例如要格式化5行,就可以用命令:gq4j。这个命令告诉vim要格式化本行,同时要格式化下面的4行,这样就达到了格式化5行的目的。如果要格式化整个段落,可以将光标放在段落的第一行上,然后执行命令gq}。而使用命令gqip可以格式化当前段落,而且并不必要将光标放在段落的第一行上。 如果要想格式化一行,可以使用命令gqgq,也可以简记为gqq。 注意:选项textwidth优先于wrapmargin。如果要使wrapmargin选项生效,必须将textwidth设置为0(这也是默认值)。 合并行 命令j使两行合并为一行,同时用空格分隔这两行。 通过设置joinspace选项,可以控制合并两行时的分隔符(如果一行是以标点符号来结尾)。如果设置:set nojoinspaces,用j命令合并两行时会用一个空格来分隔;如果设置:set joinspaces,用j命令合并两行时会用两个空格来分隔。如果不希望用空格来分隔合并的行,可以使用gj命令。 我们也可以使用:join命令,将几行合并为一行并使用空格来分隔各行。如果不希望加入空格,那么可以使用:join!命令。 命令小结 :set fileformat 设置文件格式 :set endofline 设置文件结束符 :set noendofline 取消文件结束符 :set list 进入list mode :set nolist 退出list mode :%s/\n//g 删除换行符 :set textwidth 设置行宽 :set textwidth 设置行边距 :join 合并多行 j 合并两行
试试 var=`cat IBusinessLog.2012-12-01.gz |grep "resultNo = $num"` var="$var\n"
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个名,下面两个鼎是什么成语
青龙祖山供电所这个地址在什么地方,我要处理
机动车交通事故责任纠纷中被告可否反诉
电脑ip可以改成155.155.15.1吗
春天到了我想买款帅气的风衣哪里有售啊?
描写天亮前景色的语段或句子
浙江大家投资有限公司地址在什么地方,想过去
高中生物、丁中,什么时候写非生物的物质和能
【再过五十年】再过五十年作文
刮了一辆奔驰,两厘米的痕,没掉漆,赔多少钱
代表聊天的诗句
日本为什么农业劳动力不足,但是日本地少人多
未成年人改名字爷爷或奶奶可以陪同吗
沙洋县荆门美佳窗帘我想知道这个在什么地方
现在在拓普面试,不知道里面普工工资怎么样
推荐资讯
下列哪种说法是错误的(  )A.素质教育以促
在制作蚕豆叶表皮细胞的临时装片,用低倍镜观
装电信宽带,就必须买电信手机吗
英雄时刻怎么传快手
outlook网页版 如何设置要求已读回执
怎样鉴定乾隆年制铜胎掐丝珐琅
焖猪手怎么做好吃,生蚝焖猪手的家常做法
国家电网望留供电所地址有知道的么?有点事想
急求《西风颂》英文版的朗诵!
硫化钠溶液怎样配制
为什么老车间更换卷闸门为什么要计入管理费用
《马说》改写400字,不要翻译,改写成散文,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?