使用 sed 提取一行

使用 sed 提取一行

我只是想知道如何使用 sed 提取特定行?(我的系统已经安装了 sed,所以不幸的是没有 awk :()。我得到了一个如下文本文件:

Business Name,Description,Address,Postal Code,Email,Phone,Fax,Web Site,City,Latitude,Longitude,Keywords,Mailing Address,Indigenous Ownership,Region,Type,Industry Sector,Year Formed,Number of Employees,Primary Contact,Contact Title,Twitter,Facebook,When Updated
Duz Cho Construction LP,"Duz Cho Construction is an earthworks construction company doing site development, road access, and reclamation for the oil and gas, wind energy, mining and other civil works construction within the traditional territory of McLeod Lake Indian Band.",4821 South Access Road,V0C 1J0,[email protected],250-788-3120,250-788-3188,https://duzcho.com/duz-cho-construction/,Chetwynd,55.6963381,-121.6266684,Duz Cho Construction LP  23  Construction,"4821 South Access Road, Chetwynd, BC V0C 1J0",TRUE,Northeast,Community Owned Company,23  Construction,2002,55 to 99,Jacob Albertson,General Manager,,https://www.facebook.com/DuzChoConstruction/,2012-04-15
Gilwa Consulting Inc.,"Gilwa Consulting Inc. (GCI) is an Indigenous owned and operated business that provides advisory services for all participants in the construction industry engaged in developing, implementing, and/or executing on contractual agreements between Indigenous peoples, industry (EPC, EPCM, Contractors), and/or government.",710 Ruston Road,V1X3Y2,[email protected],778-215-1888,,http://www.gilwaconsulting.com,Kelowna,49.8804877,-119.4070893,"Gilwa Consulting Inc. 54  Professional, scientific and technical services","710 Ruston Road, Kelowna, BC V1X 3Y2",TRUE,Thompson / Okanagan,Private Company,"54  Professional, scientific and technical services",2019,1 to 4,Thomas Nyce,Director,,,2021-04-14
HSI  Hobbs Strategic Insights,"Offering a full suite of strategic planning, business consultation, corporate communications and success & inclusion coaching services, HSI works with you to manifest transformational initiatives from conception to implementation. HSI is a leader in Indigenous reconciliation work, and diversity & inclusion initiatives for corporate entities.",,V3M 0J4,[email protected],604-626-8296,,https://strategicinsights.ca,,,,"HSI  Hobbs Strategic Insights 54  Professional, scientific and technical services",,TRUE,Lower Mainland / Southwest,Private Company,"54  Professional, scientific and technical services",2021,1 to 4,Sasha Hobbs,Principal Strategist,,,2021-04-14
Bigfoot Donuts,"Bigfoot Donuts is a locally owned and operated bakery and caf in the heart of Downtown Courtenay. Specializing in handcrafted, made from scratch, quality, coffee and donuts, with a side of fun.",463 A 5th Street,V9N 1J7,[email protected],250-871-6603,,https://www.bigfootdonuts.com/,Courtenay,49.6902502,-125.0032691,Bigfoot Donuts 72  Accommodation and food services,"463 A 5th Street, Courtenay BC V9N 1J7",TRUE,Vancouver Island and Coast,Private Company,72  Accommodation and food services,2017,5 to 9,Lyndsey Bell,Owner,,https://www.facebook.com/Bigfoot.Donuts/,2021-04-14
Refocus Communications & Fundraising,"Refocus helps non-profit organizations more deeply engage their community and supporters so that, together, they can do great things in the world.
We work with charities across Canada, helping them build fundraising programs with an engagement and communications focus.","20543 96 Ave., Unit 31",V1M 3W3,[email protected],778.875.3439,,http://www.refocuscommunications.com,Langley ,49.1776159,-122.6564416,Refocus Communications & Fundraising 81  Other services (except public administration),"20543 96 Ave., Unit 31, Langley, BC V1M 3W3",TRUE,Lower Mainland / Southwest,Private Company,81  Other services (except public administration),2017,1 to 4,Aime Lindenberger,"CEO, Chief Engagement Officer",,,2021-03-31
Turtle Island Connections,"Turtle Island Connections curates Subscription boxes filled with Indigenous creations. Our box, the Turtle Shell, focuses on our spiritual, mental, emotional, and physical well-being. Each Shell contains Indigenous art, Cultural teachings, Nourishment, Self-care products and Donation to the Vancouver Aboriginal Health Society.",3139 Brandt Crescent,V9L 6W6,[email protected],250.710.7685,,https://www.turtleislandconnections.ca,Duncan,48.7633914,-123.7137629,Turtle Island Connections 44-45  Retail trade,"3139 Brandt Crescent, Duncan BC V9L 6W6",TRUE,Vancouver Island and Coast,Partnership,44-45  Retail trade,2021,1 to 4,Lindsay Myers,Co-Founder,,https://www.facebook.com/TurtleIslandConnections,2021-03-31
Bulkley Valley Roofing Ltd,"Specializing in Commercial, Industrial and Residential Roofing. Fully certified and insured for hot roofing work. Red-seal Journeymen staffed.","Unit 3-3167 Tatlow rd, ",V0J 2N0,[email protected],250-846-9446,250-846-9440,,Smithers,54.7698334,-127.143943,Bulkley Valley Roofing Ltd 23  Construction,"Unit 3-3167 Tatlow rd, Smithers BC V0J 2N0",TRUE,North Coast,Development Corporation,23  Construction,2000,5 to 9,Murray Olivier,Owner/operator,,,2021-03-31
North Coast Helicopters,Northcoast Helicopters provides experienced long-line pilots who are seasoned in diamond drill support and mountain flying. Northcoast Helicopters provides wildfire fighting services to various private and government agencies.,2555 Seal Cove Road unit 123,V8J 3P6,[email protected],250-631-6031,,http://www.northcoasthelicopters.com,Prince Rupert,54.3369741,-130.3125632,"North Coast Helicopters 21  Mining, quarrying, and oil and gas extraction","2555 Seal Cove Road unit 123, Prince Rupert BC V8J 3P6",TRUE,North Coast,Private Company,"21  Mining, quarrying, and oil and gas extraction",2005,5 to 9,Kristen,Owner,,,2021-03-31
Park West Professional Services,Call Center,"Suite 811, 100 Park Royal, Suite 200",V7T 1A2,[email protected],604-210-1483,,,West Vancouver,49.3251879,-123.1358334,"Park West Professional Services 54  Professional, scientific and technical services","100 Park Royal, Suite 200, West Vancouver, BC V7T 1A2",TRUE,Lower Mainland / Southwest,Private Company,"54  Professional, scientific and technical services",2013,10 to 19,Matt Vickers,Owner,,,2021-03-31
Afterglow Hair Lounge,"Get your glow on. We strive to provide our guests the same quality one-on-one service small towns are renowned for, with the style, talent and professionalism of the city. We're proud to have been nominated and featured as some of the ""Best of Powell River"" stylists in 2017, 2018, 2019 and 2020 and have a shared dedication to maintain improve client experiences in years to come.  Look no further for the best wedding stylists of the upper Sunshine Coast  available year-round for events in-salon*, seven days a week. Come experience AfterGlow.",7075 Alberni Street,V8A2C2,[email protected],604.485.2075,, http://www.afterglowhairlounge.com,Powell River,49.8468725,-124.5196439,Afterglow Hair Lounge 81  Other services (except public administration),,TRUE,Vancouver Island and Coast,Private Company,81  Other services (except public administration),2011,5 to 9,Holly Barnes,Owner/operator,https://twitter.com/afterglowhair,https://www.facebook.com/AfterGlowHairLounge,2021-03-10
Dawson Analytics Inc.,"Dawson Analytics is a consulting company specializing in research development and design, data analysis and interpretation, and program/policy evaluation. Our company sources and analyzes data to provide our clients with powerful insights into their processes, outcomes and future endeavours.",22839 Gilbert Drive,V4R 0G4,[email protected],604.961.5129,,http://www.dawsonanalytics.com,Maple Ridge,49.2512469,-122.5874728,Dawson Analytics Inc.  51  Information and cultural industries,"22839 Gilbert Drive, Maple Ridge, BC V4R 0G4",TRUE,Lower Mainland / Southwest,Private Company,51  Information and cultural industries,2021,1 to 4,Stephanie Johnston,Vice President,,,2021-03-10

所以基本上我想要的是用户提供三个信息:$1 是文件名 $2 是模式 $3 是更新年份

基本上,我想要做的是找到所有具有企业名称的条目:第一列与模式匹配,并且我只想要那些与 $3 所述特定年份匹配的条目。我还想从匹配的条目中找到以下列:企业名称、描述、地址和更新时间。我有点卡住了,因为当我尝试使用参数提取第一列时,它不起作用??:

sed -E 's/([^,]*),'"$2"'/\1/' "$1"

没有过滤掉任何东西??

答案1

sed或者awk两者都是错误的工具。


您的文件是逗号分隔值(CSV)文件,因此最好使用适当的csv解析器:

csvgrep -c "Business Name" -m "$2" -c "When Updated" -m "$3" "$1"

通过以下方式安装:

sudo apt install csvkit

由于您要过滤的字段恰好是第一个和最后一个,因此您可以使用grepawksed

awk -F, -v name_pattern="$2" -v year="$3" '$1~name_pattern && $NF~year' "$1"

或者

sed -nE "/[^,]*$2.*$3-[0-9]{2}-[0-9]{2}\$/p" "$1"

或者

grep -P "^[^,]*$2.*$3-[0-9]{2}-[0-9]{2}\$" "$1"

但是请注意,这些解决方案非常脆弱,仅适用于您的简单示例。例如,如果您的企业名称中有逗号,它将不起作用:

"Bla, Bla & sons"

同样,如果您想根据其他字段进行过滤。


csv应该始终优先考虑合适的解析器!

答案2

默认情况下,sed 不会进行过滤,它会编辑然后打印结果,无论是否进行任何编辑操作。

如果你希望它进行过滤,那么使用选项-n告诉它在编辑行后不打印它们。然后,你要打印,请输入 ap 运算符。例如:

sed -nE 's/match string/replace string/p'

然后,只有匹配且成功编辑的内容才会被打印。

但也要意识到,匹配行上任何与匹配字符串不匹配的内容都将完整地通过并打印。因此,如果您只想打印行的某些部分,则匹配字符串必须匹配整行,然后替换字符串只会放回您要打印的部分(当然,除非您确实想打印不匹配的部分)。

相关内容