PTw*_*wno 1 bash shell awk grep
我有这个代码:
list=$(ls -l | awk '{print$3,$6,$7,$8,$9}' | grep -v root)
echo $list
Run Code Online (Sandbox Code Playgroud)
并且输出是所有过滤字符串的联合版本,如下所示:
> avahi Nov 16 21:50 1170 syslog Nov 16 21:50 1171 messagebus ...
Run Code Online (Sandbox Code Playgroud)
我想要的是:
> avahi Nov 16 21:50 1170
> syslog Nov 16 21:50 1171
> messagebus Nov 16 21:50 1179
> ...
Run Code Online (Sandbox Code Playgroud)
我还读过grep的默认输出应该给我的段落版本就像我想要的那样,但事实并非如此.我究竟做错了什么?
鉴于:
$ txt="line 1
> line 2
> line 3
> line 4"
Run Code Online (Sandbox Code Playgroud)
(即txt设置为line 1\nline 2\nline 3\nline 4)
考虑:
$ echo $txt
line 1 line 2 line 3 line 4
Run Code Online (Sandbox Code Playgroud)
VS:
$ echo "$txt"
line 1
line 2
line 3
line 4
Run Code Online (Sandbox Code Playgroud)
使用引号或Bash将解释和拆分空格(如\n行的末尾).
另外,尝试解析输出通常不是一个好主意,ls因为文件名可以包含空格.文件名中的空格将破坏管道的其余部分(正如您所写的那样).
使用带有glob的循环.