Awk басып шығару мәлімдемесінде аргумент айналасында жалғыз тырнақшаларды қалай қосуға болады?

Ыңғайлы болу үшін мен барлық көшірілген файлдарды жұмыс көшірмесінде svn rm үшін бүркеншік атты жасадым:

alias svnrmall="svn status | grep '^\!' | awk '{print \$2}' | xargs svn rm"

Бұл файл атауында бос орын болғанда ғана жұмыс істейді.

Мәселеге қарапайым шешім awk әр файл жолын жалғыз тырнақшалармен қамтуы мүмкін сияқты, бірақ мен мұны қалай жасауға болатынын білмеймін.

Мысалы, осындай нәрсе (бұған қате: «өрнектегі жарамсыз char») қоспағанда:

alias svnrmall="... | awk \"{print '\$2'}\" | ..."
3
PS. grep қажеті жоқ, awk үлгіні awk '/ pattern/{print $ 2}' сәйкес келтіруге болады./{$ 2 басып шығару} '
қосылды автор matchew, көзі
@matchew А, жақсы білу. Рахмет!
қосылды автор user212218, көзі

1 жауаптар

q айнымалысын анықтау үшін -v қолданыңыз және бұл айнымалы мәнді awk пайдаланыңыз

alias svnrmall="... | awk -v q="'" '{print q $2 q}' | ..."
15
қосылды
@Ritesh, егер q-ге бір ұйғарымның орнына қос тырнақшаны тағайындау керек болса? Мен q = «» «» тырыстық, бірақ ол жұмыс істемеді ...
қосылды автор user3768495, көзі
Болашақ оқырмандар үшін ескерту: өрістерге бөлінген бос орындар туралы алаңдамастан бүкіл сызықты таңдау үшін $ 0 функциясын қолдана аласыз.
қосылды автор simonwo, көзі
Мұны, менің сипатталған мәселені дұрыс шешетіндіктен, қабылданған жауап ретінде белгілеу. Дегенмен, енді мен XY мәселесін құрбаны болдым деп түсінемін - нақты бір нәрсе жасауым керек еді сияқты awk ... {print q $ 2 $ 3 (және т.б.) q} .
қосылды автор user212218, көзі
Рахмет және сәттілік!
қосылды автор Ritesh, көзі