Как добавить новый столбец в файл с разделителями табуляции в конце файла, содержащий одинаковые значения для каждой строки.

Например:

inFile.txt

Name    Age Address Sex
X   12  adrs1   M
Y   15  adrs2   F
Z   10  adrs3   M

Я хочу добавить еще один столбец «Школа», содержащий те же значения «st.xaviers» для каждой строки

outfile.txt

Name    Age Address Sex School
X   12  adrs1   M   st.xaviers  
Y   15  adrs2   F   st.xaviers
Z   10  adrs3   M   st.xaviers

Я пробовал awk '{print $0, "School"} чтобы добавить столбец. Как я могу добавить 'st.xaviers' в каждую строку в столбце "Школа"?

Теперь, если это часть сценария оболочки, и у меня есть предопределенная переменная School = st.xaviers.

Как я могу добавить значения $School в столбец «School» в outfile.txt

2 ответа2

0

Клянусь, тот же вопрос был задан и дан ответ пару недель назад ... но я не могу его найти.

Рецепт:

  • проверьте, является ли первый столбец "Имя", и напечатайте строку TAB и "Школа", когда это так; сделано, перейдите к следующей строке
  • все остальные непустые строки (существует $ 1) должны быть напечатаны с помощью следующей табуляции и "st.xaviers"

Такие как:

awk -vschool="$School" '$1=="Name" { print $0 "\tSchool"; next}; $1 {print $0 "\t" school}'

или же

export School
awk '$1=="Name" { print $0 "\tSchool"; next}; $1 {print $0 "\t" ENVIRON["School"]}'

Первый определяет переменную awk, используя -v, последний заглядывает в свою среду после того, как экспорт позволяет ему видеть School.

0

Если вы разрешите Perl как расширенный набор awk:

perl -p -i -e 's/Sex$/Sex\tSchool/ or s/$/\tst.xaviers/'

Я думаю, что подобная конструкция возможна и в awk (или sed).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .