2016-04-13 4 views
1

Я нахожусь в UNIX-окне HP-UX/ksh, и у меня есть файлы, в которых я хочу всегда заменять первую строку другой строкой с содержимым из переменных. Вот пример файла и переменные:Замените первую строку файла и добавьте новую строку с переменными

date=04_16_2016 

var1=RM1 

(var1 будет отличаться в других случаях)

file1.text:

file=/home/user1/something_04_09_2016.txt 
stuff 
stuff 
stuff 

Я хочу, чтобы заменить полностью стереть эту первую строку и замените его на что-то вроде этого psuedo-кода:

file=/home/user1/something_$var1_$date.txt 

Так файл будет иметь следующий, когда сделано:

file=/home/user1/something_RM1_04_13_2016.txt 
stuff 
stuff 
stuff 

Любая помощь будет оценен по достоинству!

ответ

1

Скажем, у вас есть date и var1 множество, то вы можете сделать

sed "1 s:.*:/home/user1/something_${var1}_${date}.txt}:" file1.txt > file1.mod 

sed s применяется только к линии 1.

0

Если ваш sed без опции -i (изменить inplace), вы можете использовать ed. Не отступайте от кода внизу, большинство вещей должно быть в начале строки.

newstring="/home/user1/something_${var1}_$(date +'%d_%m_%Y').txt" 
ed -s input << EOF 
1c 
${newstring} 
. 
w 
q 
EOF 
0

другой sed альтернатива

header="some string with $var and $formatted_date" 
sed -i -e "1i${header}" -e 1d file 
Смежные вопросы