我有三个这样的文件:
haeder
line
我写这个:
sed '1,1d' */*filename*.txt | xarg cat > crap4.txt
并期待这一点:
line
line
line
但我得到" cat:line:没有这样的文件或目录" ...
答案 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寻求帮助。