Почему "сед" не подхватить по команде? - PullRequest
1 голос
/ 13 июня 2019

`При использовании sed и попытке извлечь конкретную строку она теряет часть p в« sed -n (x) p test.txt »

Я пытаюсь посмотреть на строку и посмотреть, является ли она А или Б.

sed -n 3p test.txt

отлично работает, но я пытаюсь сделать:

sed -n $(Count) test.txt

Это не работает

sed -n $($Count)p test.txt

Не работает

Count=$(cat -n test.txt | grep -o [0-9]* | tail -1)

until [ $Count = 0 ]; do
    if [[ $(sed -n $(Count)p test.txt) = Him ]] || [[ $(sed -n $(Count)p model.txt) = He ]]
        then
        echo "This is a Boy Word"
    elif [[ $(sed -n $(Count)p model.txt) = Her ]] || [[ $(sed -n $(Count)p model.txt) = She ]]
        then
        echo "This is an Girl Word"
    fi
    let Count=Count-1
    sleep 1
done

Я ожидаю: Это слово мальчика

Это Слово мальчика

Это женское слово

Это женское слово ... Пока он не прошел все линии,

However I'm getting (with sed -n $($Count)p test.txt)
Line 17: 3: command not found
Line 20: 3: command not found
Line 17: 2: command not found
Line 17: 2: command not found


Or (with sed -n $(Count)p test.txt
Line 17: Count: command not found
Line 20: Count: Command not found
Line 17: Count: Command not Found
Line 20: Count: command not found

1 Ответ

1 голос
/ 13 июня 2019

Вам необходимо использовать полную форму ${Count}, чтобы отделить имя переменной от соседнего символа.

sed -n ${Count}p test.txt

Или просто заключите в кавычки расширение параметра:

sed -n "$Count"p test.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...