[英]Bash, mass data change on data from a column but only specific lines
我有一個數據文件,需要對特定行或列進行批量日期更改。 它僅在以 0003-0 結尾的特定行上。 還有許多其他類似的,我不需要更改它們。 我附上一個例子。 在 Due 列下,我需要將日期更改為較新的日期,但僅限於以 -0 結尾的行,我認為我可以為 0003-0 執行此操作,因為它們是相同的。 它需要是一個 bash 腳本。 我試過 awk 和 grep egrep 但收效甚微。
User id: CR 24-FEB-22
Active Orders Report Page 5
141543B NS N 14 14 NO 220224 12468064-0003-1
144461-003B NS N 16 16 NO 220225 12473061-0003-1
143092B NS N 9 9 NO 220225 12472857-0003-1
153674-002G NS N 10 10 NO 220225 12477592-0003-1
150543B NS N 243 243 NO 220228 12477208-0003-1
145874D NS N 96 96 NO 220228 12477238-0003-1
140725D NS N 140 140 NO 220228 12476411-0003-1
------------------------------------------------------------------------------
Material name: 915028-120-60 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
138540-005H NS N 3 3 NO 220224 12469166-0003-1
134305-005H NS N 17 17 NO 220224 12468143-0003-1
134305-004H NS N 17 17 NO 220224 12468699-0003-1
138540-003H NS N 1 1 NO 220224 12469164-0003-1
134305-004H NS N 17 17 NO 220225 12472767-0003-1
134305-025H NS N 18 18 NO 220225 12473151-0003-1
134305-004H NS N 17 17 NO 220228 12476502-0003-1
134305-005H NS N 17 17 NO 220228 12476974-0003-1
134305-025H NS N 10 10 NO 220228 12475684-0003-1
134305-004H NS N 17 17 NO 220228 12476418-0003-1
------------------------------------------------------------------------------
Material name: 915028-120-48 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
166764-003B NS N 8 8 NO 220225 12472406-0003-1
166764-003B NS N 8 8 NO 220228 12476160-0003-1
------------------------------------------------------------------------------
Material name: 915028-119-48 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
134914-001D NS N 46 46 NO 220101 12478187-0003-0
134307-005K NS N 19 19 NO 220101 12470436-0003-0
134838E NS N 150 150 NO 220101 12474868-0003-0
134307-005K NS N 19 19 NO 220101 12474436-0003-0
146376C NS N 24 24 NO 220203 12468515-0003-1
$ awk -v d='270503' '$NF ~ /-0$/{$0 = substr($0,1,43) d substr($0,50)} 1' file
User id: CR 24-FEB-22
Active Orders Report Page 5
141543B NS N 14 14 NO 220224 12468064-0003-1
144461-003B NS N 16 16 NO 220225 12473061-0003-1
143092B NS N 9 9 NO 220225 12472857-0003-1
153674-002G NS N 10 10 NO 220225 12477592-0003-1
150543B NS N 243 243 NO 220228 12477208-0003-1
145874D NS N 96 96 NO 220228 12477238-0003-1
140725D NS N 140 140 NO 220228 12476411-0003-1
------------------------------------------------------------------------------
Material name: 915028-120-60 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
138540-005H NS N 3 3 NO 220224 12469166-0003-1
134305-005H NS N 17 17 NO 220224 12468143-0003-1
134305-004H NS N 17 17 NO 220224 12468699-0003-1
138540-003H NS N 1 1 NO 220224 12469164-0003-1
134305-004H NS N 17 17 NO 220225 12472767-0003-1
134305-025H NS N 18 18 NO 220225 12473151-0003-1
134305-004H NS N 17 17 NO 220228 12476502-0003-1
134305-005H NS N 17 17 NO 220228 12476974-0003-1
134305-025H NS N 10 10 NO 220228 12475684-0003-1
134305-004H NS N 17 17 NO 220228 12476418-0003-1
------------------------------------------------------------------------------
Material name: 915028-120-48 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
166764-003B NS N 8 8 NO 220225 12472406-0003-1
166764-003B NS N 8 8 NO 220228 12476160-0003-1
------------------------------------------------------------------------------
Material name: 915028-119-48 Thk: 0.375
Part name ST F OrgQty Qty PR Due Order number
-------------------- -- - ------ ------ -- ------ ------------------------------
134914-001D NS N 46 46 NO 270503 12478187-0003-0
134307-005K NS N 19 19 NO 270503 12470436-0003-0
134838E NS N 150 150 NO 270503 12474868-0003-0
134307-005K NS N 19 19 NO 270503 12474436-0003-0
146376C NS N 24 24 NO 220203 12468515-0003-1
似乎我在詢問錯誤的輸入,因為這是 output 需要更改日期並由另一個程序運行。 我需要做的是在 a.csv 文件中找到末尾有相應 -0 的日期,並將日期更改為今天的日期。 我打算去grep -o
找到這個,但我可能只使用 awk 找到第 6 列並將這些列的日期更改為今天的日期。
no, quantity, ordered, date, order no
133346B 36 36 NO 220225 12473014-0003-1
089122-018M 2 2 NO 220225 12472891-0003-1
166563A 76 76 NO 220225 12473558-0003-1
089122-018M 2 2 NO 220228 12476638-0003-1
091075G 60 60 NO 220228 12477089-0003-1
133160-MFGA 8 8 NO 220101 12474637-0003-0
147461-MFGA 39 39 NO 220101 12474816-0003-0
105176C 66 66 NO 220101 12474805-0003-0
144076-MFGB 112 112 NO 220101 12474813-0003-0
137602A 120 120 NO 220101 12474867-0003-0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.