亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3179 | 回復: 9
打印 上一主題 下一主題

awk處理兩個文件的問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-01-16 19:02 |只看該作者 |倒序瀏覽
本帖最后由 dashorc 于 2012-01-16 19:04 編輯

cat file1:

9 1     28234   131072
9 0     28298   131072
25 0    28362   131072
20 0    28426   131072
10 0    28490   131072
2 0     28554   131072
3 0     28618   131072
5 0     28682   131072

cat file2:

<!-- Name:0x25 -->
<forward cmd="0x25" sub_cmd="any" l5_mod_id="25" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<!-- Name:0x09 r -->
<forward cmd="0x09" sub_cmd="0x00" l5_mod_id="9" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x02" l5_mod_id="9" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x03" l5_mod_id="9" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<!-- Name:0x09 w -->
<forward cmd="0x09" sub_cmd="0x01" l5_mod_id="9" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x04" l5_mod_id="9" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />

現(xiàn)在需要比較兩個文件,如果file2里面的l5_mod_id 和l5_cmd_id和file1里面的第一列和第二列的值相等,那么將l5_mod_id后面的值替換成file1文件的第三列值。

最終想要的文件應該為:

<!-- Name:0x25 -->
<forward cmd="0x25" sub_cmd="any" l5_mod_id=" 28362" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<!-- Name:0x09 r -->
<forward cmd="0x09" sub_cmd="0x00" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x02" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x03" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
<!-- Name:0x09 w -->
<forward cmd="0x09" sub_cmd="0x01" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
<forward cmd="0x09" sub_cmd="0x04" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />


自己寫了一個,但是得不出來結果
awk 'BEGIN{FS="[\" \t]"}NR==FNR{a[$1]=$1"X"$2;b[$1]=$3}NR>FNR{c=$9"X"$12;if(c=a[$9]) $9=b[$6]}' file1 file2

但是awk 'BEGIN{FS="[\" \t]"}NR==FNR{a[$1]=$1"X"$2;b[$1]=$3}NR>FNR{c=$9"X"$12;if(c=a[$9]) $9="1111";print}' file1 file2
這個是可以打印出來
為什么我的b[$1]=$3取不到值?

論壇徽章:
0
2 [報告]
發(fā)表于 2012-01-16 19:08 |只看該作者
過年放假,求高手指點啊,每次手工改文件很惡心

論壇徽章:
3
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亞洲杯之阿曼
日期:2015-04-07 20:00:59
3 [報告]
發(fā)表于 2012-01-16 19:45 |只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽

論壇徽章:
0
4 [報告]
發(fā)表于 2012-01-16 19:51 |只看該作者
本帖最后由 lionfun 于 2012-01-16 19:51 編輯

回復 1# dashorc

我也來試一個一般般的
  1. [root@local ~]# awk 'NR==FNR{a[$1$2]="l5_mod_id=\""$3"\"";next}NR>FNR && /forward/{t=$5;gsub(/l5_mod_id=|"/,"",$4);gsub(/l5_cmd_id=|"/,"",$5);$4=a[$4$5];$5=t}1' file1.txt file2.txt

  2. <!-- Name:0x25 -->
  3. <forward cmd="0x25" sub_cmd="any" l5_mod_id="28362" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  4. <!-- Name:0x09 r -->
  5. <forward cmd="0x09" sub_cmd="0x00" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  6. <forward cmd="0x09" sub_cmd="0x02" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  7. <forward cmd="0x09" sub_cmd="0x03" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  8. <!-- Name:0x09 w -->
  9. <forward cmd="0x09" sub_cmd="0x01" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
  10. <forward cmd="0x09" sub_cmd="0x04" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
復制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2012-01-17 10:02 |只看該作者
zooyo 發(fā)表于 2012-01-16 19:45
高手都On the way home。


謝謝,測試可用,不過樓下的簡單一些

論壇徽章:
0
6 [報告]
發(fā)表于 2012-01-17 10:03 |只看該作者
lionfun 發(fā)表于 2012-01-16 19:51
回復 1# dashorc

我也來試一個一般般的



代碼好用,原來我一直在鉆牛角尖,看了您的代碼恍然大悟哈

論壇徽章:
0
7 [報告]
發(fā)表于 2012-01-17 11:08 |只看該作者
本帖最后由 jiejie455 于 2012-01-17 11:08 編輯

awk 'NR==FNR{a["l5_mod_id=\""$1"\" l5_cmd_id=\""$2"\""]="l5_mod_id=\""$3"\" l5_cmd_id=\""$2"\""}NR>FNR{for(i in a){gsub(i,a,$0)};print $0}' file1 file2

論壇徽章:
0
8 [報告]
發(fā)表于 2012-01-17 14:14 |只看該作者
牛人啊,學習學習了

論壇徽章:
0
9 [報告]
發(fā)表于 2012-01-23 20:37 |只看該作者
本帖最后由 yangkyo821 于 2012-01-23 20:38 編輯
  1. [joe@joe-laptop test]$ awk 'NR==FNR{a[$1,$2]=$3;next}{FS="\"";OFS="\"";if(($6,$8) in a)$6=a[$6,$8]}1' 1 2
  2. <!-- Name:0x25 -->
  3. <forward cmd="0x25" sub_cmd="any" l5_mod_id="28362" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  4. <!-- Name:0x09 r -->
  5. <forward cmd="0x09" sub_cmd="0x00" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  6. <forward cmd="0x09" sub_cmd="0x02" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  7. <forward cmd="0x09" sub_cmd="0x03" l5_mod_id="28298" l5_cmd_id="0" protocol="udp" conn_pool_size="1" />
  8. <!-- Name:0x09 w -->
  9. <forward cmd="0x09" sub_cmd="0x01" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
  10. <forward cmd="0x09" sub_cmd="0x04" l5_mod_id="28234" l5_cmd_id="1" protocol="udp" conn_pool_size="1" />
復制代碼

論壇徽章:
0
10 [報告]
發(fā)表于 2012-01-23 21:47 |只看該作者
圍觀各路shell高手
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP