0

有人可以帮助纠正我的 bash 文本解析行吗?

程序:eyeD3

文件

PathAndPlaylists.txt[制表符分隔]

/home/Music/A/Average White Band/1975/Average White Band - Cut The Cake.mp3 1970-POP; -所有流行音乐;1970-全部

cat PathAndPlaylists.txt | while read z; do filename=$(echo "$z" | cut -f1) playlists=$(echo "$z" | cut -f2) eyeD3 --no-tagging-time-frame --no-zero-padding --set-text-frame=TCOM:"$playlists" "$filename" done

客观的

为程序“eyeD3”使用上述文本文件 (PathAndPlaylists.txt) 中的每个绝对文件/路径,以使用第二个制表符分隔字段 (1970-POP;-ALL-POP;1970-ALL)。

问题:我无法确保文件/路径将被视为文本,而某些字符不会导致代码失败。例如逗号。

此致。

4

1 回答 1

1

如果输入是制表符分隔的,只需告诉外壳。

while IFS='        ' read filename playlists; do
    eyeD3 ... "$playlists" ... "$filename"
done <PathAndPlaylists.txt

The IFS= value should be a literal tab character. If you work at the prompt, you might need to type something like ctrl-V tab to get a literal tab. Check your shell's documentation for specifics.

于 2012-08-06T17:03:51.897 回答