다음 입력 데이터에는 헤더 정보가 있는 테이블 속성이 포함되어 있습니다. 예상되는 출력은 제목 및 예상 텍스트의 줄 바꿈과 함께 아래에 제공됩니다. 이는 테이블 이름이 변경될 때 예상됩니다.
입력 데이터
Table,Host,Database,Schema,column
DEPT,My Host,My Database,Integration,Deptno
EMP,My Host,My Database,stage,emp_no
EMP,My Host,My Database,stage,emp_name
예상 출력:
+++ Database Column - begin ++
Table,Host,Database,Schema,column
DEPT,My Host,My Database,Integration,Deptno
+++ Database Column - end +++
+++ Database Column - begin ++
Table,Host,Database,Schema,column
EMP,My Host,My Database,stage,emp_no
EMP,My Host,My Database,stage,emp_name
+++ Database Column - end +++
답변1
어쩌면 다음과 같은 것일 수도 있습니다.
awk -F, '
BEGIN {
table = 1#st field
begin = "+++ Database Column - begin +++"
end = "+++ Database Column - end +++"
}
NR == 1 {begin = begin "\n" $0; next}
$table != last_table {
if (NR > 2) print end
print begin
last_table = $table
}
{print}
END{if (NR > 1) print end}'
답변2
한 가지 방법은 다음과 같습니다.
$ perl -ne 'BEGIN{
$header="+++ Database Column - begin +++";
$footer="+++ Database Column - end +++";
}
if($.==1){
$header.="\n$_";
next;
}
print "$header$_$footer\n"' file
+++ Database Column - begin +++
Name,Host,Database,Schema,Table,Description,ODBC Type,Data Type,Native Type
Deptno,My Host,My Database,Integration,Dept,Description of Column,INTEGER,INT16,Number
+++ Database Column - end +++
+++ Database Column - begin +++
Name,Host,Database,Schema,Table,Description,ODBC Type,Data Type,Native Type
empno,My Host,My Database,stage,emp,Description of Column,INTEGER,INT16,Number
+++ Database Column - end +++
+++ Database Column - begin +++
Name,Host,Database,Schema,Table,Description,ODBC Type,Data Type,Native Type
empname,My Host,stage,emp,Description of Column,VARCHAR,STRING,Text
+++ Database Column - end +++