如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
就bash
mystring=$(printf "%s|" *)
echo ${mystring%|}
其他回答
sed方法,
sed -e ':a; N; $!ba; s/\n/,/g'
# :a # label called 'a'
# N # append next line into Pattern Space (see info sed)
# $!ba # if it's the last line ($) do not (!) jump to (b) label :a (a) - break loop
# s/\n/,/g # any substitution you want
注意:
这在复杂度上是线性的,在所有行都附加到sed的模式空间之后只替换一次。
@AnandRajaseka的答案,和其他一些类似的答案,比如这里,是O(n²),因为sed必须做替换每次新行追加到模式空间。
来比较,
seq 1 100000 | sed ':a; N; $!ba; s/\n/,/g' | head -c 80
# linear, in less than 0.1s
seq 1 100000 | sed ':a; /$/N; s/\n/,/; ta' | head -c 80
# quadratic, hung
类似于第一个选项,但省略了后面的分隔符
ls -1 | paste -sd "," -
如果你的xargs版本支持-d标志,那么这应该可以工作
ls | xargs -d, -L 1 echo
-d是分隔符标志
如果没有-d,那么可以尝试以下操作
ls | xargs -I {} echo {}, | xargs echo
第一个xargs允许您指定分隔符,在本例中为逗号。
sed -e :a -e '/$/N; s/\n/\\n/; ta' [filename]
解释:
-e -表示要执行的命令 :a -为标签 /$/N -定义当前和(N)下一行的匹配范围 s / \ n / \ \ n /;-将所有EOL替换为\n 助教;-如果匹配成功,则标记a
摘自我的博客。
就bash
mystring=$(printf "%s|" *)
echo ${mystring%|}
推荐文章
- 如何从命令行在windows中找到mysql数据目录
- 在Bash命令提示符上添加git分支
- 如何创建一个日期对象从字符串在javascript
- 匹配前后的Grep字符?
- 在Android上将字符串转换为整数
- 删除字符串的最后3个字符
- 如何大写一个字符串的第一个字母在省道?
- 如何在Makefile中设置子进程的环境变量
- 带有多个条件的Bash if语句将抛出错误
- 不区分大小写的列表排序,没有降低结果?
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 发送字符串到stdin
- 在JavaScript中将JSON字符串解析为特定对象原型
- 如何从另一个文件A中删除文件B中出现的行?