命令输出并排打印

命令输出并排打印

以下是我的命令输出:

# ls -la | grep -i text | awk '{print $9}' 
text1.txt
text2.txt
text3.txt
text4.txt

我想打印输出值如下:

text1.txt:text2.txt:text3.txt:text4.txt

答案1

天哪,不,不解析ls。 你要

( files=(*text*); IFS=:; echo "${files[*]}" )

我使用子 shell,因此当前 shell 中的 IFS 变量不受影响。

如果你确定文件名不包含换行符,你可以这样做

ls -1 *text* | paste -sd:

答案2

你可以将内容放入 bash 脚本中,如下所示:

unset list
for file in `ls -a | grep -i 'text'`; do list=$list"$file:"; done
echo ${list::-1}

如果您多次运行该命令,则初始操作unset是删除先前的值。要删除最后的冒号 (:),您可以在echo运行 bash4.2或更高版本时执行此操作,就像我在代码中所做的那样。

答案3

请尝试一下,它应该有效

$ ls -la | grep -i text | awk '{printf ": %s", $9}'

答案4

你好,Mohammad Alzatari Ans 帮助我解决了这个问题。

$ ls -la | grep -i text | awk '{printf ":%s", $9}'|awk '{print substr($1,2);}'

text1.txt:text2.txt:text3.txt:text4.txt

问题解决了

相关内容