【发布时间】:2012-03-02 14:14:55
【问题描述】:
我有三个这样的文件:
haeder
line
我写这个:
sed '1,1d' */*filename*.txt | xarg cat > crap4.txt
并期待这个:
line
line
line
但我得到“猫:行:没有这样的文件或目录”......
【问题讨论】:
我有三个这样的文件:
haeder
line
我写这个:
sed '1,1d' */*filename*.txt | xarg cat > crap4.txt
并期待这个:
line
line
line
但我得到“猫:行:没有这样的文件或目录”......
【问题讨论】:
这可能对你有用(GNU sed):
sed -s '1d' */*filename*.txt > crap4.txt
-s 开关将每个文件分开处理,而不是默认的作为一个连续的流。
【讨论】:
那是因为 sed 正在发送那些编辑过的文件的内容。 cat 获取的第一个参数是编辑文件的第一行。
你想的太复杂了
sed '1,1d' */*filename*.txt > crap4.txt
【讨论】:
这是对 cat 的无用用法(由 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
但是使用“>”代替“猫”可能是您最好的选择。
【讨论】:
这是完美的工作:
array=(*somestring*.txt)
for i in {0..2}; do
sed '1d' ${array[$i]} >> crap4.txt;
done
扑救。
感谢您的帮助。
【讨论】: