如何在Bash中添加多个分隔符
我试图找出如何设置两个分隔符:一个是换行符,另一个是空格,所以当我从这样填充的文件中读取数字时如何在Bash中添加多个分隔符,bash,shell,Bash,Shell,我试图找出如何设置两个分隔符:一个是换行符,另一个是空格,所以当我从这样填充的文件中读取数字时 1 2 3 4 5 6 我按顺序得到一个数字,如1,2,3,4,5,6。我正在使用read命令读取数字。谢谢 您的问题非常不清楚,但基于示例和预期输出,简单的解决方案是使用tr: $ cat file | tr '[ \n]' , 1,2,3,4,5,,6, 但是5后面有一个空格,因此需要使用-s压缩重复: 这仍然会给你留下一个令人讨厌的逗号和结尾处的换行符。可以使用sed或awk处理。(用蓝宝
1 2 3
4
5
6
我按顺序得到一个数字,如
1,2,3,4,5,6
。我正在使用read命令读取数字。谢谢 您的问题非常不清楚,但基于示例和预期输出,简单的解决方案是使用tr
:
$ cat file | tr '[ \n]' ,
1,2,3,4,5,,6,
但是5
后面有一个空格,因此需要使用-s
压缩重复:
这仍然会给你留下一个令人讨厌的逗号和结尾处的换行符。可以使用sed
或awk
处理。(用蓝宝石和钢铁叙述者的声音)Awk已被分配:
等等。既然我们开始了awk
为什么还要麻烦tr
:
$ awk '{
gsub(/ +/,",",p) # replace space runs with a single comma
printf "%s",p
p=(p~/,$/||NR==1?"":",") $0 # 5 followed by space leaves a comma in the end so...
}
END {
print p
}' file
1,2,3,4,5,6
这看起来很复杂,我刚才注意到你提到过使用read
命令,所以我的解决方案可能有点不对劲,我应该从一开始就使用bash脚本:
s="" # using this neat trick I just learned here ;D
while read line # read a full line
do
for word in $line # read word by word
do
echo -n $s$word # output separator and the word
s=, # now set the separator
done
done < file
echo # newline to follow
1,2,3,4,5,6
s=”“#使用我刚刚学到的这个巧妙的技巧;D
读一行时#读一整行
做
对于$line中的单词#逐字阅读
做
echo-n$s$word#输出分隔符和单词
s=,#现在设置分隔符
完成
完成<文件
echo#要跟随的新行
1,2,3,4,5,6
是的,现在是星期六晚上,我没有生活。你能检查一下吗,如果它有效的话:
echo$(cat file_name)|而IFS=read-r var;不要重复$var;完成
。谢谢你,给你。
$ awk '{
gsub(/ +/,",",p) # replace space runs with a single comma
printf "%s",p
p=(p~/,$/||NR==1?"":",") $0 # 5 followed by space leaves a comma in the end so...
}
END {
print p
}' file
1,2,3,4,5,6
s="" # using this neat trick I just learned here ;D
while read line # read a full line
do
for word in $line # read word by word
do
echo -n $s$word # output separator and the word
s=, # now set the separator
done
done < file
echo # newline to follow
1,2,3,4,5,6