Почему бы не взять все в awk
, вам нужно программа"?
awk 'BEGIN {n=split("abc def lce",q," ");for (i=1;i<=n;i++) d[q[i]]="P"i} {sub($2,d[$2])}8' file
12 P1 13 14
13 P2 14 15
1 P3 22 14
Как это работает
awk '
BEGIN { # Begin block
n=split("abc def lce",q," ") # split the list of data in to array "q" and set "n" to number of elements
for (i=1;i<=n;i++) # loop trough all elements
d[q[i]]="P"i # assing P1, P2 etc to first, second element "d[abc]=P1" etc
}
{sub($2,d[$2])} # change filed 2 to new element
8 # print the new line
' file # input file
Если таблица с данными "P" не сиквел, вы можете добавить его так же, как и другие таблицы:
awk 'BEGIN {n=split("abc def lce",q," ");split("P2 Q4 A3",r," ");for (i=1;i<=n;i++) d[q[i]]=r[i];print d["def"]}'
Решение 'awk' не очень хорошо. OP любит искать значение во внешнем скрипте и заменять его в файле, а не просто цифра строки. – Jotne
Извините, но не могли бы вы пояснить, что вы имеете в виду? ... О, ты имеешь в виду, что сценарий «программы» уже написан ...? – csiu
Он хотел бы поменять текст на какой-то другой текст, основанный на таблице, хранящейся в его программе. Eks, если «qwr» изменяется на «P84AA», а не только на счетный номер, – Jotne