gpt4 book ai didi

shell - 使用 sed 打印匹配行

转载 作者:行者123 更新时间:2023-12-03 09:20:50 25 4
gpt4 key购买 nike

我有 stackoverflow.csv 文件中的示例数据:

foo
foo
foo
foo
bar
bar
bar
bar
baz
baz
baz
baz

我知道 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

像这样:

#!/bin/sh
sleep 2
sed -n /foo/p > foo.csv
sed -n /bar/p > bar.csv
sed -n /baz/p > baz.csv

这会创建文件,但它们都是空的。另外,如果脚本只有一个打印语句,它也可以工作。

有什么意见吗?

最佳答案

您错过了输入文件名

#!/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

您可以提供输入文件作为脚本的参数,在这种情况下,更改脚本以读取参数并将其传递给 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

关于shell - 使用 sed 打印匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com