【发布时间】:2016-02-16 00:35:26
【问题描述】:
我制作了一个 shell 脚本,可以用来制作 MPD 的播放列表。我可以按照我想要的那样按文件夹和艺术家写歌曲,但是当我尝试使用 awk 在脚本末尾删除重复项时,输出变为空。
脚本如下:
(
mpc search artist 'Black Coast' &&
mpc search artist 'ASTR' &&
ls ~/music/HDD/Chill | awk '$0="HDD/Chill/"$0'
) | tee testi.txt;
awk '!v[$0]++' testi.txt | tee testi.txt
上面的 awk 正确地为字符串添加了前缀,但是如果我在输出下方添加 awk,则输出是一个空文件。但是,当超出脚本文件时,该行仍然有效。
编辑:它适用于
(
mpc search artist 'Black Coast' &&
mpc search artist 'ASTR' &&
ls ~/music/HDD/Chill | awk '$0="HDD/Chill/"$0'
) | awk '!v[$0]++' | tee testi.txt
所以我的问题变成了为什么上面的例子不起作用?
【问题讨论】:
-
为什么是两个
tees?为什么你有一个临时文件? -
如果你有 GNU awk,你可以进行就地编辑。还有来自 moreutils 的海绵:unix.stackexchange.com/a/207921/70524