管道通过xargs sed到cat?

时间:2012-03-02 14:14:55

标签: bash sed cat

我有三个这样的文件:

haeder
line

我写这个:

sed '1,1d' */*filename*.txt | xarg cat > crap4.txt

并期待这一点:

line
line
line

但我得到" cat:line:没有这样的文件或目录" ...

4 个答案:

答案 0 :(得分:3)

这可能适合你(GNU sed):

sed -s '1d' */*filename*.txt > crap4.txt

-s开关分​​别处理每个文件而不是默认值,即一个连续流。

答案 1 :(得分:2)

那是因为sed正在发送那些已编辑文件的内容。 cat获取的第一个参数是编辑文件的第一行。

你想让它太复杂,你想要

sed '1,1d' */*filename*.txt > crap4.txt

答案 2 :(得分:1)

这是猫的无用用法(由Randal Schwartz定义)。使用普通重定向工作。如果你真的想使用cat,你需要删除'xargs'并使用' - '作为cat的参数。这是打印/ etc / hosts

中所有名称的示例
myhost> awk '{print $NF}' /etc/hosts | cat -
localhost
myhost

hosts
ip6-loopback
ip6-localnet
ip6-mcastprefix
ip6-allnodes
ip6-allrouters
ip6-allhosts

但是使用'>'相反,摆脱'猫'可能是你最好的选择。

答案 3 :(得分:0)

这是完美的:

array=(*somestring*.txt)
for i in {0..2}; do
sed '1d' ${array[$i]} >> crap4.txt;
done

抨击救援。

Thanx寻求帮助。