如何使用awk获得结果
++++++++++ 输入: 所需产出:如何使用awk获得结果,awk,Awk,++++++++++ 输入: 所需产出: EMP DEPT LOGIN REC WORKING FOR === ==== ========= =========== EMPNO 16: DEPTNO:10, GROUP:36 1 min 30 sec 1 advanced automation EMPNO
EMP DEPT LOGIN REC WORKING FOR
=== ==== ========= ===========
EMPNO 16: DEPTNO:10, GROUP:36 1 min 30 sec 1 advanced automation
EMPNO 17: DEPTNO:4, GROUP:1010 2 sec vacation
++++++++++
如何在单个命令行中仅使用awk获得输出
基本上,正如您所看到的,我想对输入应用一些规则(通过在我正在处理的一个大文件中应用awk获得):
EMPNO 16:
(DEP,GROUP) DEPTNO:10, GROUP:36 , AREA-CA
LOGIN TIM: loginday=10 min 30 sec loginrec=1 min 30 sec
working for 'advanced automation'
请尝试以下内容。(完全基于所显示的样本,没有按照OP在预期输出中显示的适当空间)
请尝试以下内容。(完全基于所显示的样本,没有按照OP在预期输出中显示的适当空间)
这些是制表符分隔的字段吗?不完全是,请参阅我的上一次编辑。我是通过连接上一步得到输入的。在该步骤中,文本前有空格,用于几行,这就是这些制表符分隔的字段得到的。不完全是,请参阅我的上一次编辑。我是通过连接上一步得到输入的。在该步骤中ep文本前有空格,只有几行,这就是它的工作原理,如何在其中获得缩进/格式?@Sach,需要处理它,在我的晚餐后会看到:)也看到一次此链接在有人回复你的答案后应该怎么做SO/。它工作,如何将缩进/格式也包含在其中?@Sach,需要处理它,在我的晚餐后将看到:)也查看一次此链接在SO/上有人回复你的答案后应该怎么做。
EMPNO 16:
(DEP,GROUP) DEPTNO:10, GROUP:36 , AREA-CA
LOGIN TIM: loginday=10 min 30 sec loginrec=1 min 30 sec
working for 'advanced automation'
awk '
BEGIN{
print "EMP DEPT LOGIN REC WORKING FOR"
}
match($0,/^EMPNO [0-9]+:/){
EMP=substr($0,RSTART,RLENGTH)
}
match($0,/DEPTNO:[0-9]+\, GROUP:[0-9]+/){
DEPT=substr($0,RSTART,RLENGTH)
}
match($0,/loginrec.*sec/){
LOGIN=substr($0,RSTART+9,RLENGTH-9)
}
match($0,/working for \047.*/){
WORKING=substr($0,RSTART+13,RLENGTH-14)
}
{
print EMP,DEPT,LOGIN,WORKING
EMP=DEPT=LOGIN=WORKING=""
}' Input_file
$ cat tst.awk
BEGIN {
OFS="\t"
print "EMP", "DEPT", "LOGIN REC", "WORKING FOR"
print "===", "====", "=========", "==========="
}
{
match($0,/loginrec=/)
loginRec = workingFor = substr($0,RSTART+9)
sub(/:.*/,"",loginRec)
gsub(/^[^\047]*\047|\047[^\047]*$/,"",workingFor)
print $1" "$2, $4" "$5, loginRec, workingFor
}
$ awk -f tst.awk file
EMP DEPT LOGIN REC WORKING FOR
=== ==== ========= ===========
EMPNO 16: DEPTNO:10, GROUP:36 1 min 30 sec 1 advanced automation
EMPNO 17: DEPTNO:4, GROUP:1010 2 sec 2 vacation
$ awk -f tst.awk file | column -s$'\t' -t
EMP DEPT LOGIN REC WORKING FOR
=== ==== ========= ===========
EMPNO 16: DEPTNO:10, GROUP:36 1 min 30 sec 1 advanced automation
EMPNO 17: DEPTNO:4, GROUP:1010 2 sec 2 vacation