Подаришь седу кошке через xargs? - PullRequest
1 голос
/ 02 марта 2012

У меня есть три файла вроде этого:

haeder
line

Я пишу это:

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

и ожидаю этого:

line
line
line

но я получаю "кошку": line: Нет такого файла или каталога "...

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Это может работать для вас (GNU sed):

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

Переключатель -s обрабатывает каждый файл отдельно, а не по умолчанию, как один непрерывный поток.

2 голосов
/ 02 марта 2012

Это потому, что sed отправляет содержимое этих отредактированных файлов. Первый аргумент, который получает cat - это первая строка отредактированного файла.

Ты делаешь это слишком сложным, хочешь

sed '1,1d' */*filename*.txt > crap4.txt
1 голос
/ 02 марта 2012

Это бесполезное использование кошки (как определено Рэндалом Шварцем).Использование простого перенаправления работает.Если вы действительно хотите использовать 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

Но вместо этого использовать '>' и избавиться от 'cat', вероятно, ваш лучший выбор здесь.

0 голосов
/ 02 марта 2012

Вот что отлично сработало:

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

Удара на помощь.

Спасибо за помощь.

...