Неожиданное поведение grep, когда в Ubuntu задан шаблон [0 -9]

Укажите replace-strс опцией -Iна xargs, и замена будет выполняться в любом месте команды, а не просто доводить аргумент до конца.

$ echo -e "google.com\nfarrellit.net\nexample.com" | xargs -I % -n 1 host % 8.8.8.8

У меня отлично работает в bash/osx:

Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

google.com has address 172.217.9.46
google.com has IPv6 address 2607:f8b0:4009:802::200e
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

farrellit.net has address 99.84.254.112
farrellit.net has address 99.84.254.4
farrellit.net has address 99.84.254.33
farrellit.net has address 99.84.254.62
farrellit.net mail is handled by 10 mail3.farrellit.net.
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0.
0
17.01.2021, 09:34
1 ответ

Я не могу воспроизвести ни Bash 5.1.4 в Arch Linux, ни Ubuntu 16.04:

$ docker run --interactive --rm --tty ubuntu:16.04 /bin/bash
# cat > numbers <<EOF
> this line has 3
> this line has 4
> this line has 2
> this line has 8
> this line has 1
> EOF
# grep [0-9] numbers
this line has 3
this line has 4
this line has 2
this line has 8
this line has 1

У @Kusalananda есть правильная идея , у вас, вероятно, есть файл с именем точно «1», в который некавычки расширяются до того, как он будет передан вgrep:

# touch 1
# grep [0-9] numbers
this line has 1

Ответ:Use More Quotes™:)

0
18.03.2021, 22:36

Теги

Похожие вопросы