файл:
DocumentNameA varying number of words symbols etc
DocumentName2 varying number of words symbols etc
AnotherDocumentName varying number of words symbols etc
Я хочу сделать что-то вроде
sed -i 's/$1/"<opentag>"$1"</closetag>"/' file
Чтобы изменить файл на
<opentag>DocumentNameA</closetag> varying number of words symbols etc
<opentag>DocumentName2</closetag> varying number of words symbols etc
<opentag>AnotherDocumentName</closetag> varying number of words symbols etc
Кажется, должен быть простой способ сделать это, но я его еще не нашел
Вы можете приблизиться к предложенному синтаксису с помощью awk - либо
awk '{$1 = "<opentag>" $1 "</closetag>"} 1' file
, либо
awk '{$1 = sprintf("<opentag>%s</closetag>", $1)} 1' file
GNU awk имеет -i inplace
, эквивалент sed -i
, например:
gawk -i inplace '{$1 = "<opentag>" $1 "</closetag>"} 1' file
Вы можете использовать \ 1
для ссылки на соответствующие подвыражения в регулярном выражении:
sed -Ei 's:^([^ ]+):"<opentag>\1</closetag>":' file