我有 stackoverflow.csv 文件中的示例数据:
foo
foo
foo
foo
bar
bar
bar
bar
baz
baz
baz
baz
Run Code Online (Sandbox Code Playgroud)
我知道与sed -n /foo/p stackoverflow.csv > foo.csv
我将获取与 foo 匹配的所有记录定向到该文件,但我不想在 cli 上指定匹配模式,我宁愿将其放入脚本中并将所有记录(foo、bar 和 baz)发送到他们自己的文件。
基本上在脚本中是这样的:
sed -n /foo/p stackoverflow.csv > foo.csv
sed -n /bar/p stackoverflow.csv > bar.csv
sed -n /baz/p stackoverflow.csv > baz.csv
Run Code Online (Sandbox Code Playgroud)
像这样:
#!/bin/sh
sleep 2
sed -n /foo/p > foo.csv
sed -n /bar/p > bar.csv
sed -n /baz/p > baz.csv
Run Code Online (Sandbox Code Playgroud)
这会创建文件,但它们都是空的。另外,如果脚本只有一个打印语句,它也可以工作。
有什么意见吗?
您错过了输入文件名
#!/bin/sh
sleep 2
sed -n /foo/p stackoverflow.csv > foo.csv
sed -n /bar/p stackoverflow.csv > bar.csv
sed -n /baz/p stackoverflow.csv > baz.csv
Run Code Online (Sandbox Code Playgroud)
您可以提供输入文件作为脚本的参数,在这种情况下,更改脚本以读取参数并将其传递给命令sed。像这样运行脚本: ./script.sh input_filename,您可以在其中指定不同的输入文件作为参数。
#!/bin/sh
file=${1}
sed -n /foo/p ${file} > foo.csv
sed -n /bar/p ${file} > bar.csv
sed -n /baz/p ${file} > baz.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8287 次 |
| 最近记录: |