Что мне нравится в awk, вы можете получить все строки из файла, который удовлетворяет условию в каком-либо произвольном поле, которое вы укажете. Например,Как сделать замену регулярных выражений только в произвольном поле, которое вы указываете
awk '$3~/hi/' < test.txt # print all lines where the third field matches the pattern "hi"
или
awk '$2>=2' < test.txt # print all lines where the second field is greater or equal to 2
Как новичок, который узнав о силе юниксовских, я абсолютно очарован об этом. Теперь мне интересно, есть ли простой способ выполнять подстановки регулярных выражений только для некоторых произвольных полей, которые вы указали? Например, я хочу сделать замену регулярных выражений только в третьем поле. мой текущий метод - это «вырезать» поле, которое я хочу, и выполнять подстановку с помощью Perl или sed, которые затем «вставляют» в исходный файл. Но мне интересно, есть ли более эффективный способ достичь этого.
Благодаря
Я думаю, что было бы лучше, чтобы установить значение 'OFS' раз и перед чтением входного файла в' BEGIN' блока, как 'AWK -F«»«BEGIN {OFS = „“ } {sub ...} '' – Birei