awk sed 應用例項1

2021-09-09 07:33:03 字數 1289 閱讀 8766

昨天,一位群友在群裡面問如何使用 sed 生成目標格式的問題。問題的詳細描述如下:

乙個檔案中有多行資料,每一行資料的格式如下:

a b c d

x y

輸出資料格式如下:

a_b b_i c_i d_e

v_b g_e

通過對輸入與輸出的分析,不難看出開頭的乙個欄位要新增 _b 字尾,中間字段新增 _i 字尾,末尾字段新增 _e 字尾。這種格式轉換使用 sed 的話相對麻煩,因此我先使用 awk 解決了這個問題。

使用的 awk 指令碼內容如下:

else if (nf == 2)  else 

printf("%s_e\n", $nf)

}}

將上述指令碼儲存為 make.suffix.awk 檔案,使用 gawk -f make.suffix.awk filename 執行。

測試使用的輸入檔案的內容如下:

a b c d

x yx y z

a b c d e g exy

x zz x

執行結果如下:

[longyu@debian:09:39:26] awk $ gawk -f make_suffix.awk data

a_b b_i c_i d_e

x_b y_e

x_b y_i z_e

a_b b_i c_i d_i e_i g_i e_e

x_by_b

x_b z_e

z_b x_e

使用 sed 也能夠解決這個問題。這裡使用的 sed 指令碼內容如下:

/.*/\) /\1_i /g

s/[[:alpha:]]\$/&_e/

s/\(^[[:alpha:]]\\)_[ie]/\1_b/

}

執行示例如下:

[longyu@debian:09:46:29] awk $ sed -f  sedsrc-make-suffix.sed   data

a_b b_i c_i d_e

x_b y_e

x_b y_i z_e

a_b b_i c_i d_i e_i g_i e_e

x_by_b

x_b z_e

z_b x_e

首先在所有的單詞後面追加 _i,然後先處理結尾的 _e,最後替換行首的單詞即可。

hive應用例項1

我們沿用之前hadoop wordcount的結果資料 hadoop icity0 hadoop fs cat wc out part r 00000 warning hadoop home is deprecated.beautiful1 day1 dear2 hello2 hometown1 h...

KLEE應用例項1

原文 這個例項用來引導你完成乙個最簡單的測試。1 下面是乙個待測試的函式,int get sign int x 這個函式就是根據輸入的x,返回 1 0 1表示x的符號。2 符號化輸入 為了利用klee測試這個函式,首先需要設定符號化輸入,也就是把輸入變數符號化。這裡用到 klee make symb...

乙個稍微複雜的awk sed應用

最近做了乙個文字 cdr轉換器,從 a樣式轉換為 b樣式,如下所示。a樣式 b樣式 a樣式到b樣式的轉換要點如下 1.header 和trailer 都可直接轉換,但是 b樣式需要加上 cdr的計數 2.b樣式的header 還含有record type 需要從 a樣式的某個注釋行中獲取 3.字段域...