[92940814@shell.testing-studio.com ~]$cat name1.txt | sed 's/ /../g'
张三
李四
王五
....
赵..六
[92940814@shell.testing-studio.com ~]$while read line;do echo ${line// /..};done < name1.txt
张三
李四
王五
赵..六
第二种为什么没有把第四行中的两个空格替换成"…"
[92940814@shell.testing-studio.com ~]$cat name1.txt | sed 's/ /../g'
张三
李四
王五
....
赵..六
[92940814@shell.testing-studio.com ~]$while read line;do echo ${line// /..};done < name1.txt
张三
李四
王五
赵..六
第二种为什么没有把第四行中的两个空格替换成"…"
其实名字前后都有空格时,第二种方式也无法处理,我个人是按如下方式处理的,以供参考。
local seeds=while read line;do echo $(sed 's/ /../g');done < wx.txt
echo ${line// /…},这种使用方式具体如何替代的,查了也没搞明白,个人决定弃用。
你这个写法会导致第一行丢失的
感觉最佳的应该这样写吧:
while read line;do if [ "$line" ];then echo ${line// /..};else echo ..;fi;done < name1.txt
read line的时候会去掉首尾的空格,但空值的变量还是保留了,所以感觉多余的那个空格实际上是一个\n
简写如下:
while read line;do [ "$line" ]&&echo ${line// /..}||echo ..;done < name1.txt
@hogwarts_wenzi 谢谢助教,你真细心,处理缺失一行都被你发现了。
我自己做了一个文本,里面含有名字,分为几种情况:名字前后中都带有空格,也就是说前后中的空格视为名字的一部分要保留,基于这个前提去实现的。
所有行均被处理,但是如果一个名字前后都空格,即前后空格是名字的一部分,则该名字的前后空格在read line会被去掉。
local seeds=`while read -r line;do echo "$line" | sed 's/ /../g';done < wx.txt`
名字前中后都有空格,如果要保留,其实可以直接这样处理。
local seeds=`sed 's/ /../g' wx.txt`
这个方法是可行的,MD语法代码使用的“```” 三个飘号开始 三个飘号结束
谢谢助教,搞定了
这个第一行丢失的原理是什么?没太看懂
local seeds= `while read line;do echo $(sed 's/ /../g');done < wx.txt`
local seeds=`while read -r line;do echo "$line" | sed 's/ /../g';done < wx.txt`
read -r line,-r加不加都可以,其实就是echo后多加了"$line",这就明确指出对指定内容进行替换,不加呢就从第二行替换。问题就在这。
如果想深入学习,有书讲的很系统,极客上我看了也有老师讲,应该也比较深入。如果有兴趣,可以深入学习。