2015-02-03 3 views
1

Я довольно новичок в bash, поэтому я надеюсь, что это простой вопрос, я пытаюсь использовать 2 переменные в команде sed, но это не сработает. Я пытаюсь вставить переменную Ь в строке (переменной) а:с использованием двух переменных с sed -i

a=5 
b=123456 
sed -i $a $b myfile.txt 

Я пытался возиться с кавычками, но не может получить это право. Любая помощь очень ценится!

+2

Первый сорт, что вы написали бы, если эти номера были написаны инлайн в сценарии. Затем переработайте этот скрипт, чтобы заменить два числа ссылками на переменные, не забывая использовать двойные кавычки, а не одинарные кавычки. (Подсказка: синтаксис, который вы в настоящее время пытаетесь использовать, совершенно неверен!) Также вам нужно определить, что вы подразумеваете под «вставить переменную b в строку a»; вы ставите b на строку самостоятельно до строки a, после строки a, вместо строки a, или вы добавляете b в строку (а затем местоположение в строке, которую вы положили). Для каждого варианта есть разные ответы. Также GNU vs 'classic'/POSIX? –

+0

Вы хотите вставить 123456 в строку 5 или в любое время, когда в ваших данных будет 5? Небольшие выборочные данные и ожидаемый результат помогут сделать это намного легче. Удачи. – shellter

+0

Спасибо за помощь! Я понял, что добавление i к моей переменной «a», а двойные кавычки фиксировали все это. а = 5i; б = 123456; sed -i "$ a $ b" myfile.txt; – qplay

ответ

2

Я не уверен, но это поможет вам

seq 10 > FileName 

cat FileName 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

a=5 
b=12345 

sed "/$a/a$b" FileName 

Выход:

1 
2 
3 
4 
5 
123456 
6 
7 
8 
9 
10 
+0

помог с логикой, которую мне пришлось использовать, спасибо! – qplay

+0

Добро пожаловать, если вы примете мой ответ, я получу зеленый тик:) - – Kalanidhi

Смежные вопросы