<menu id="4oq46"><strong id="4oq46"></strong></menu>
  • <menu id="4oq46"><menu id="4oq46"></menu></menu><input id="4oq46"><tt id="4oq46"></tt></input>
  • <tt id="4oq46"><strong id="4oq46"></strong></tt>
    <menu id="4oq46"><strong id="4oq46"></strong></menu>
      免費注冊 查看新帖 |

    Chinaunix

      平臺 論壇 博客 文庫
    12下一頁
    最近訪問板塊 發新帖
    查看: 137479 | 回復: 12
    打印 上一主題 下一主題

    [文本處理] 請教高難度 shell腳本 搞定加微信發紅包獎勵 [復制鏈接]

    論壇徽章:
    0
    跳轉到指定樓層
    1 [收藏(0)] [報告]
    發表于 2018-12-08 10:43 |只看該作者 |倒序瀏覽


    A 表格如下  第22列 第23列(紅色為22列)

    "232"|"1er"|"eqw"|.......|"OTH"|"WY"|"rr"
    "222"|"e6r"|"wqw"|.......|"Citizen"|"WY"|"rr"
    "222"|"1er"|"eqw"|.......|"Dual_Citizen"|"WY"|"rr"
    "212"|"eer"|"wqw"|.......|"Resident"|"WY"|"rr"
    "252"|"e2r"|"eqw"|.......|""|"WY"|"rr"
    "252"|"e2r"|"eqw"|.......|"WQC"|"WY"|"rr"

    只保留23列 保留規則如下
    如果22列的值是  "OTH" 或者 "Resident" 其對應的23列的值保持不變
    如果22列的值是  "Citizen"或者"Dual_Citizen" 其對應的23列的值替換為 "US"
    如果22列的值 為空 "" 其對應的23列的值替換為 "DKK_US"
    如果22列的值 不為空 也不是上面 四個值 其刪除改行


    改后效果如下

    "232"|"1er"|"eqw"|.......|"WY"|"rr"
    "222"|"e6r"|"wqw"|.......|"US"|"rr"
    "222"|"1er"|"eqw"|.......|"US"|"rr"
    "212"|"eer"|"wqw"|.......|"WY"|"rr"
    "252"|"e2r"|"eqw"|.......|"DKK_US"|"rr"


    哪個大神 搞定的話  請留下 微信號   

    論壇徽章:
    8
    2016科比退役紀念章
日期:2018-10-24 08:24:0115-16賽季CBA聯賽之北控
日期:2019-03-12 14:34:562016科比退役紀念章
日期:2019-04-01 10:33:0915-16賽季CBA聯賽之山東
日期:2019-04-17 12:46:3215-16賽季CBA聯賽之廣夏
日期:2019-05-09 16:40:4015-16賽季CBA聯賽之廣夏
日期:2019-10-10 15:33:4015-16賽季CBA聯賽之遼寧
日期:2019-10-15 08:37:0615-16賽季CBA聯賽之北控
日期:2021-03-30 15:53:34
    2 [報告]
    發表于 2018-12-10 11:05 |只看該作者
    1. gawk 'BEGIN{FS=OFS="|"}$22 ~"Citizen"{$23="\"US\""} $4~ "\"\""{$23="\"DKK_US\""} $22 ~"OTH|Resident|Citizen|\"\""{print $0}' A.txt
    復制代碼

    試試看。

    論壇徽章:
    25
    程序設計版塊每日發帖之星
日期:2016-05-03 06:20:0015-16賽季CBA聯賽之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16賽季CBA聯賽之佛山
日期:2018-08-03 13:19:3315-16賽季CBA聯賽之山西
日期:2018-08-07 19:46:2315-16賽季CBA聯賽之廣夏
日期:2018-08-08 19:31:5015-16賽季CBA聯賽之青島
日期:2018-11-26 15:21:5015-16賽季CBA聯賽之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16賽季CBA聯賽之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16賽季CBA聯賽之八一
日期:2018-07-03 16:56:46
    3 [報告]
    發表于 2018-12-10 12:23 |只看該作者
    本帖最后由 wh7211 于 2018-12-10 19:47 編輯

    回復 1# xin2v

    1. awk 'BEGIN{FS=OFS="|"}{if($22~"OTH|Resident"){NF=NF}else if($22~"Citizen|Dual_Citizen"){$23="\042US\042"}else if($22~"\042\042"){$23="\042DKK_US\042"}else{next}}1' A
    復制代碼

    論壇徽章:
    0
    4 [報告]
    發表于 2018-12-10 17:27 |只看該作者
    樓主文本多少行,列?

    論壇徽章:
    0
    5 [報告]
    發表于 2018-12-11 12:28 |只看該作者
    1 這個不難。
    2
    ======================================================
    問:為何不建議大家使用txt,csv保存數據?
    答:
    好的沙發是寶貝,斷腿沙發和它差不多,卻是垃圾。
    整理好的數據是寶貝,雜亂堆放在txt,log中的未處理數據,卻是垃圾。
    csv中用單雙引號,數據沒有相關的類型綁定,沒有精度綁定。

    如果說raw是,干凈的裸數據。

    txt不是干凈的裸數據,txt是字符串,它含有雜亂格式,空格,tab,分隔符。
    大多數情況下,字段順序也都未整理。

    excel就是,干凈的裸數據,加富類型。
    excel中的數據也不是最好的,也需要整理。



    ======================================================
    問:excel有何好處?
    答:
    1 excel可以合并單元格。
    2 支持圖表,公式。
    3 單元格內支持單雙引號,單元格內的數據有,類型,有精度。
    4 有圖形軟件,操作簡單。
    等。

    3 win + excel + powershell ,測試通過,結果正常。

    1. $輸入文件 = 'a:\pscode\0\excel\temp209\b.xlsx'



    2. #region main
    3. $excel對象 = New-Object -comobject Excel.Application
    4. $SheetName = "sheet1"
    5. $Excel工作簿 = $excel對象.Workbooks.Open($輸入文件)
    6. $Excel工作表 = $Excel工作簿.Worksheets.Item($SheetName)
    7. $excel對象.Visible = $true
    8. $列 = 23
    9. $列2 = 24

    10. $行 = 1
    11. $最大行 = $Excel工作表.UsedRange.rows.count
    12. write-host $最大行

    13. for ($i = $行;$i -le $最大行;$i++)
    14. {
    15.         $單元格 = $($Excel工作表.Cells.Item($i,$列).Value2).ToString()
    16.         switch ($單元格)
    17.         {
    18.                 'OTH' {break}
    19.                 'Resident' {break}
    20.                 'Citizen' {$Excel工作表.Cells.Item($i,$列2).Value2 = "US";break}
    21.                 'Dual_Citizen' {$Excel工作表.Cells.Item($i,$列2).Value2 = "US";break}
    22.                 '' {$Excel工作表.Cells.Item($i,$列2).Value2 = "DKK_US";break}
    23.                 default {[void]$Excel工作表.Cells.Item($i,$列).EntireRow.Delete() }
    24.         }
    25. }
    26. [void]$Excel工作表.Cells.Item($i,$列).EntireColumn.Delete()




    27. $Excel工作簿.save()
    28. #endregion main





    29. #region  掃尾
    30. Start-Sleep 2
    31. $Excel工作簿.close()
    32. Remove-Item  "$home\documents\resume.xlw" -ErrorAction:SilentlyContinue
    33. Start-Sleep 2
    34. $excel對象.Quit()


    35. Start-Sleep 2
    36. [System.Runtime.InteropServices.Marshal]::ReleaseComObject($Excel工作簿)
    37. [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel對象)
    38. [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel對象)
    39. Start-Sleep 2
    40. [System.GC]::Collect()
    41. [System.GC]::WaitForPendingFinalizers()

    42. Remove-Item  "$home\documents\resume.xlw" -ErrorAction:SilentlyContinue
    43. Write-Host "------------end-------------"
    44. Write-Host "---腳本運行完畢后,輸入exit命令退出powershell窗口;螯c擊右上角的x,關閉powershell窗口,后臺excel.exe即可自動退出。---"
    45. exit 0
    46. #endregion  掃尾

    復制代碼


    不知道為啥,最近處理行列表格數據的需求,多起來了。
    我打算安利一波 ps + excel 處理表數據。

    大家記住,ps (或py)+ excel 是高級的數據處理!

    論壇徽章:
    0
    6 [報告]
    發表于 2018-12-11 13:28 |只看該作者
    本友會機友會攝友會 發表于 2018-12-11 12:28
    1 這個不難。
    2
    ======================================================

    大哥 是LINUX 服務器啊

    論壇徽章:
    0
    7 [報告]
    發表于 2019-01-03 17:30 |只看該作者
    回復 2# cfwyy

    如果需求變了原來是
    如果22列的值 不為空 也不是上面 四個值 其刪除改行
    現在是不刪除  該如何處理 ?

    論壇徽章:
    0
    8 [報告]
    發表于 2019-01-03 17:32 |只看該作者

    如果需求變了原來是
    如果22列的值 不為空 也不是上面 四個值 其刪除改行
    現在是不刪除  該如何處理 ?

    論壇徽章:
    0
    9 [報告]
    發表于 2019-01-03 17:42 |只看該作者
    awk 'BEGIN{FS=OFS="|"}{if($4~"OTH|Resident"){NF=NF}else if($4~"Citizen|Dual_Citizen"){$5="\042US\042"}else if($4~"\042\042"){$5="\042DKK_US\042"}}1' A

    想通了 謝謝

    論壇徽章:
    0
    10 [報告]
    發表于 2019-04-12 09:56 |只看該作者
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則 發表回復

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP
       日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站