我有一个文件,内容如下:
t_chaos_m_quartz_locks
t_chaos_m_quartz_blob_triggers
t_chaos_m_quartz_calendars
我想改成^t_chaos_m_quartz_[a-z]
,t_chaos_m_quartz_[A-Z]
我试过这个:
awk -F "t_chaos_m_quartz" '{print $FS toupper($2)}' tmp2
输出:(我认为 FS 表示分隔符 t_chaos_m_quartz,但它会打印整个)
t_chaos_m_quartz_locks _LOCKS
t_chaos_m_quartz_blob_triggers _BLOB_TRIGGERS
t_chaos_m_quartz_calendars _CALENDARS
还有:(灵感来自tr -t [a-z][A-Z]
, 直到它把一切都变成资本)
cat tmp2 | tr -t [t_chaos_m_quartza-z] [t_chaos_m_quartzA-Z]
T_CHAOS_M_QUARTZ_LOCKS
T_CHAOS_M_QUARTZ_BLOB_TRIGGERS
T_CHAOS_M_QUARTZ_CALENDARS
最奇怪的是:(我找不到描述输出的方法)
cat tmp2 | tr -t t_chaos_m_quartz[a-z] [A-Z]
NISXQEFIHIJKQMNOIlES]F
NISXQEFIHIJKQMNOIRlERINMYWWUMF
NISXQEFIHIJKQMNOISQlUnTQMF
请说明如何拥有:(并请尝试解释为什么上面有他们的输出)
t_chaos_m_quartz_LOCKS
t_chaos_m_quartz_BLOB_TRIGGERS
t_chaos_m_quartz_CALENDARS
从小写转换为大写的唯一方法是使用名为 toupper 的函数。
如果您只是转换一个字母,则以下代码将起作用:
char_to_upper = toupper(char)
只需删除美元符号
FS
即可使其工作:为什么不起作用
$FS
?当您将美元符号添加到 时
FS
,awk
将其解释为位置参数:也就是说,
$FS
不返回FS
's 的值,而是被解释为$0
并输出整行。在 中使用变量时
awk
,只需通过它们的名称来引用它们。