昨天,一位群友在群裡面問如何使用 sed 生成目標格式的問題。問題的詳細描述如下:
乙個檔案中有多行資料,每一行資料的格式如下:
a b c d輸出資料格式如下:x y
a_b b_i c_i d_e通過對輸入與輸出的分析,不難看出開頭的乙個欄位要新增 _b 字尾,中間字段新增 _i 字尾,末尾字段新增 _e 字尾。這種格式轉換使用 sed 的話相對麻煩,因此我先使用 awk 解決了這個問題。v_b g_e
使用的 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.字段域...