Bash grep的输出为';逐行
我有以下代码:Bash grep的输出为';逐行,bash,shell,awk,grep,Bash,Shell,Awk,Grep,我有以下代码: list=$(ls -l | awk '{print$3,$6,$7,$8,$9}' | grep -v root) echo $list 输出是所有过滤字符串的联合版本,如下所示: > avahi Nov 16 21:50 1170 syslog Nov 16 21:50 1171 messagebus ... > avahi Nov 16 21:50 1170 > syslog Nov 16 21:50 1171 > messagebus Nov
list=$(ls -l | awk '{print$3,$6,$7,$8,$9}' | grep -v root)
echo $list
输出是所有过滤字符串的联合版本,如下所示:
> avahi Nov 16 21:50 1170 syslog Nov 16 21:50 1171 messagebus ...
> avahi Nov 16 21:50 1170
> syslog Nov 16 21:50 1171
> messagebus Nov 16 21:50 1179
> ...
我想要的是:
> avahi Nov 16 21:50 1170 syslog Nov 16 21:50 1171 messagebus ...
> avahi Nov 16 21:50 1170
> syslog Nov 16 21:50 1171
> messagebus Nov 16 21:50 1179
> ...
我还读到grep的默认输出应该提供我想要的段落版本,但事实并非如此。我做错了什么?给定:
$ txt="line 1
> line 2
> line 3
> line 4"
(即,txt
被设置为第1行\nline 2\nline 3\nline 4
)
考虑:
$ echo $txt
line 1 line 2 line 3 line 4
vs:
使用引号或Bash将解释并拆分空格(如行末尾的\n
)
另外,由于文件名中可以包含空格,因此通常需要尝试解析ls
的输出。文件名中的空格将打断管道的其余部分(如您所写)
使用带有glob的循环 给定:
$ txt="line 1
> line 2
> line 3
> line 4"
(即,txt
被设置为第1行\nline 2\nline 3\nline 4
)
考虑:
$ echo $txt
line 1 line 2 line 3 line 4
vs:
使用引号或Bash将解释并拆分空格(如行末尾的\n
)
另外,由于文件名中可以包含空格,因此通常需要尝试解析ls
的输出。文件名中的空格将打断管道的其余部分(如您所写)
使用带有glob的循环 如果您想看到单独的行,只需给出命令:
ls-l | awk'{print$3、$6、$7、$8、$9}'| grep-v root
引号:echo“$list”
输出中的
从哪里来?除非您有充分的理由不这样做,否则始终在shell脚本中引用变量。如果您想看到单独的行,只需给出命令:ls-l | awk'{print$3、$6、$7、$8、$9}'| grep-v root
引号:echo“$list”
输出中的
从何而来?除非您有充分的理由不这样做,否则请始终在shell脚本中引用变量。