Shell-Script
獲取 grepped 行下方的特定行
我在下面遇到了一個具有挑戰性的問題
我在文件中有以下文本:
create table "ctronsys".activity_codes ( code_list_id varchar(8), code_id varchar(10), record_type varchar(1), active_status_ind varchar(1), security_level varchar(1), short_description varchar(10), long_description varchar(30), record_class varchar(1), owner_id varchar(4), modify_user_id varchar(3), modify_date date, create_user_id varchar(3), create_date date ) in datadbs extent size 16 next size 16 lock mode row;
我的目標是在文本文件中查找以下行:
create table "ctronsys".activity_codes
並使用上面的來檢索下面的行:
) in datadbs extent size 16 next size 16 lock mode row;
請注意,下面要搜尋的行數根據表結構不具體
我有以下命令,它允許我使用 awk 在 grepped 行上方的一行中列印一列,但是這只列印該行中的一列,而我想列印整行:
cat table_structure | awk -v key="datadbs" '/^create/ {val=$3} $3 == key {print val;}'
使用
awk
:awk 'BEGIN { FS="\n[()]"; RS=";" } /^create table "ctronsys".activity_codes/ { print $NF }' file in datadbs extent size 16 next size 16 lock mode row
我們將文件內容劃分為- 分隔的
;
記錄。(
每條記錄根據行首的或劃分為欄位)
。讀取文件時,第一條記錄將是該特定文件的全部內容。
該記錄的第一個欄位是
create table "ctronsys".activity_codes
第二個欄位是
code_list_id varchar(8), code_id varchar(10), record_type varchar(1), active_status_ind varchar(1), security_level varchar(1), short_description varchar(10), long_description varchar(30), record_class varchar(1), owner_id varchar(4), modify_user_id varchar(3), modify_date date, create_user_id varchar(3), create_date date
最後一個欄位是
in datadbs extent size 16 next size 16 lock mode row