1
我在AIX
使用ksh
,我需要一些幫助,因爲我無法通過sed
或awk
來實現。
模板文件:(其用作輸入)如何替換文件中的字符串與其他文件的內容
...
varchar SelectStmt = 'REPLACE_SELECT_STATEMENT'
...
應該施加值(派生基於在Teradata的表名的輸入和分別和鑄造比較每個列的列數據類型他們在任何需要的地方)通過awk實現並重定向到一個文件,它有很多行(> = 100和< = 500)。
我正在讀取該文件,需要將文件內容替換爲模板文件的上述語句。我試圖
v_select_stmnt=`cat awk_output_file.txt`;
sed 's/REPLACE_SELECT_STATEMENT/"$v_select_stmnt"/g'
Template_file.txt > /directory1/final_script.txt;
即使試圖用awk_output_file.txt的awk
作爲
awk -v a_select_stmnt="$v_select_stmnt" '
{ if ($0 ~ /REPLACE_SELECT_STATEMENT/) {
sub(REPLACE_SELECT_STATEMENT,a_select_stmnt,$0); }
print $0 > "/directory1/final_script.txt" }' Template_file.txt
示例內容:(可有單引號,分號)
SELECT COLUMN1, CAST(COLUMN2 AS DECIMAL(10,3)),
CAST(COLUMN3 AS VARCHAR(40)), COLUMN4,
....
CAST(COLUMN600 AS INTEGER)
FROM DATABASE1.TABLE1 WHERE COLUMN_DATE = '2017-01-31';
的預期輸出
...
varchar SelectStmt = 'SELECT COLUMN1, CAST(COLUMN2 AS DECIMAL(10,3)),
CAST(COLUMN3 AS VARCHAR(40)), COLUMN4,
....
CAST(COLUMN600 AS INTEGER)
FROM DATABASE1.TABLE1 WHERE COLUMN_DATE = '2017-01-31';'
...
你能幫我解決這個問題嗎?由於select
聲明可能很大,因此需要保留new-line
字符以使其可讀。如果可能的話,請您發佈如何在sed
和awk
中解決這個問題。感謝您的時間。
完美的作品。謝謝Akshay Hegde。 – chill3chee