我有一个名为的文件,file_list包含以空格分隔的字符串,每个字符串都是要处理的文件的文件名.我现在希望遍历所有文件名并逐个处理它们.伪代码是
for every filename in file_list
process(filename);
end
Run Code Online (Sandbox Code Playgroud)
我想出了一个相当笨拙的解决方案,就是这样
filenames='cat file_list'N,tr -cd ' ' <temp_list | wc -cN空格并用空格解析每个文件名cut这样做有更简单/更优雅的方式吗?
ran*_*ame 19
最简单的方法是在bourne shell中使用一段时间的经典技巧.
for filename in `cat file_list`; do
# Do stuff here
done
Run Code Online (Sandbox Code Playgroud)
您可以更改文件,使单词以行分隔而不是空格分隔.这样,您可以使用典型的语法:
while read line
do
do things with $line
done < file
Run Code Online (Sandbox Code Playgroud)
随着tr ' ' '\n' < file你用新行替换空格,所以这应该:
while read line
do
do things with $line
done < <(tr ' ' '\n' < file)
Run Code Online (Sandbox Code Playgroud)
$ cat a
hello this is a set of strings
$ while read line; do echo "line --> $line"; done < <(tr ' ' '\n' < a)
line --> hello
line --> this
line --> is
line --> a
line --> set
line --> of
line --> strings
Run Code Online (Sandbox Code Playgroud)
小智 6
这是没有人发布的另一种方法:
str="a b c d"
for token in ${str}; do
echo "$token"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21633 次 |
| 最近记录: |