[{"data":1,"prerenderedAt":369},["ShallowReactive",2],{"project-26622548":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":78,"maker_in_thread":198,"shape":208,"grid":211,"attempts":331,"same_week":332,"maker_shows":33,"maker_hidden":361,"reader_version":362,"card":363},"26622548","frangipanni","A program to convert lines of text into trees","title","Show HN: I wrote a program to convert lines of text into trees","https:\u002F\u002Fgithub.com\u002Fbirchb1024\u002Ffrangipanni","github.com","birchb",1617029426,2021,333,53,101,2533,4,"legend","dev_tools","command line text filter","cli",[24,25,26,27],"text to tree","command line","log files","hierarchy viewer","loved",0.504,{"positive":31,"neutral":32,"mixed":33,"critical":34},13,8,1,2,24,{"docs":37,"idea":39,"execution":41,"design":42},{"positive":38,"critical":38},0,{"positive":40,"critical":38},11,{"positive":38,"critical":33},{"positive":38,"critical":38},[38,38,44,38,44,44,38,38,44,33,38,44,38,45,45,33,38,38,45,44,45,44,38,45,38,45,44,38,38,44,45,45,38,38,38,38,45,45,45,45],3,5,null,{"problem":48,"audience":46,"pricing":46,"motivation":55,"time_to_build":46,"stack":59,"openness":75,"stage":76,"team_size":77},{"value":49,"source":50,"evidence":51},"Digesting log files and lists of hierarchical names like Azure resources is hard to read.","maker",[52],{"id":53,"by":11,"text":54},"26622597","Author here: Often I have to digest log files and lists of Azure resource names. I prefer to work with hierarchies of things, so I wrote this simple filter. Turns out to quite…",{"value":56,"source":50,"evidence":57},"Maker often has to digest log files and Azure resource name lists and prefers working with hierarchies.",[58],{"id":53,"by":11,"text":54},[60,68],{"value":61,"source":62,"evidence":63},"Go","commenter",[64],{"id":65,"by":66,"text":67},"26624560","breck","Awesome. You really nailed it. In my experience the output for spreadsheets turns out to be key so good job highlighting that…",{"value":69,"source":62,"evidence":70},"TXR Lisp",[71],{"id":72,"by":73,"text":74},"26634166","kazinator","Actually, what it works with is a partially sorted input: an input in some tree-order input, which is what any recursive file system traversal will always put out. It will work…","open_source","launched","unknown",{"praise":79,"objections":114,"requests":134,"questions":157,"alternatives":169},[80,99,110],{"value":81,"source":62,"evidence":82},"Useful for log files and grepping; handy with awk and pipelines",[83,87,91,95],{"id":84,"by":85,"text":86},"26628408","eevilspock","I love what it does for log files. Abbreviated example from the README: ``` May 10 03:17:06 localhost systemd: Removed slice User Slice of root. May 10 03:17:06 localhost…",{"id":88,"by":89,"text":90},"26630604","clankyclanker","I love this as a post-processor for log-files. We actually have something like this at work. Unfortunately, it's applied to log-files by default. It's terrible: it breaks grep,…",{"id":92,"by":93,"text":94},"26626228","motohagiography","This looks like what I always wanted for normalizing data sets and grepping logs but couldn't articulate. Thank you!",{"id":96,"by":97,"text":98},"26624482","shipit","Exceptional! I am a heavy user for `find \u003C> | xargs grep` -- this makes my life so much sweeter. Thank you @birchb!",{"value":100,"source":62,"evidence":101},"Unix-style do one thing well tool",[102,106],{"id":103,"by":104,"text":105},"26623295","kevmoo1","Super cool, yo! Very unix – do one simple thing well.",{"id":107,"by":108,"text":109},"26624740","kevinmgranger","I've been thinking about making something like this for a while, this is great! I always thought it was weird that \"do one thing and one thing well\" stopped short of dealing with…",{"value":111,"source":62,"evidence":112},"Output for spreadsheets is useful",[113],{"id":65,"by":66,"text":67},[115,119],{"value":116,"source":62,"evidence":117},"Breaks grep on log files when applied by default",[118],{"id":88,"by":89,"text":90},{"value":120,"source":62,"evidence":121},"Name is hard to remember or unpleasant; suggested birch or txtree",[122,126,130],{"id":123,"by":124,"text":125},"26623775","jarmitage","Great, very handy! Just FYI `readlink -f` doesn't work on macOS May I suggest the name txtree?",{"id":127,"by":128,"text":129},"26627949","shok3001","really cool! But I think you should have called it \"birch\"! :) Any way you could add build instructions to the README?",{"id":131,"by":132,"text":133},"26631915","Y_Y","I also wanted to vote for \"birch\". Apparently \"frangipanni\" is a nice flower, but it reminds me of an unpleasant (imho) German dessert (\"frangipane\").",[135,142,146],{"value":136,"source":62,"evidence":137},"Homebrew packaging",[138],{"id":139,"by":140,"text":141},"26623737","jedberg","Very cool tool! Any chance that you're going to add it to Homebrew?",{"value":143,"source":62,"evidence":144},"Build instructions in README",[145],{"id":127,"by":128,"text":129},{"value":147,"source":62,"evidence":148},"Interactive tree folding TUI",[149,153],{"id":150,"by":151,"text":152},"26626638","amelius","Looks nice. Perhaps a next step could be an ncurses program that allows you to fold\u002Funfold the trees at arbitrary places, and select entries to reveal their full path (useful for…",{"id":154,"by":155,"text":156},"26632889","quietbritishjim","Definitely very interesting! But I think I'd often end up stuck in the middle of a file with no context about the time of the current line, and struggling to scroll up to capture…",[158,162],{"value":159,"source":62,"evidence":160},"How are repeated lines handled?",[161],{"id":65,"by":66,"text":67},{"value":163,"source":62,"evidence":164},"Is there documentation for the format?",[165],{"id":166,"by":167,"text":168},"26626440","rakoo","Neat! Is there some documentation on the format ?",[170,177,184,191],{"value":171,"source":62,"evidence":172},"ncdu",[173],{"id":174,"by":175,"text":176},"26624429","petethepig","Maybe this is not super relevant, but my favorite hack is that any tree-like structure like this can be browsed with ncdu. Here's a gist for breaking down redis traffic by…",{"value":178,"source":62,"evidence":179},"column --tree",[180],{"id":181,"by":182,"text":183},"26624595","mklein994","Neat. I'll add this to my toolbox. Somewhat unrelated: I discovered some time ago that the column command (from util-linux) can print trees of hierarchical data (up to 2 levels…",{"value":185,"source":62,"evidence":186},"tree --fromfile",[187],{"id":188,"by":189,"text":190},"26638256","oandrew","There is also ``` tree --fromfile ``` e.g. ``` echo a\u002Fb1 a\u002Fb2\u002Fc | xargs -n1 | tree --fromfile . └── a ├── b1 └── b2 └── c 2 directories, 2 files ```",{"value":192,"source":62,"evidence":193},"s3-tree",[194],{"id":195,"by":196,"text":197},"26707457","inadequatespace","Ah yes, I was just thinking that this could be useful for `aws s3 ls` and similar. (Really I just want `tree` on `s3`. There's `s3-tree` but that uses the entire bucket rather…",{"comments":199,"answered":45,"key":200},12,[201,202,205],{"id":53,"text":54},{"id":203,"text":204},"26710222","Mac binary https:\u002F\u002Fgithub.com\u002Fbirchb1024\u002Ffrangipanni\u002Freleases\u002Fdownload\u002Fv0.4.1\u002Ffrangipanni_darwin_amd64.zip",{"id":206,"text":207},"26633418","I refer you to the answer I gave earlier.",{"commenters":209,"max_depth":18,"maker_replies":199,"first_comment_mins":44,"lifespan_hours":210},32,188,[212,214,218,220,224,226,228,230,232,234,236,238,240,243,244,246,249,251,253,255,258,260,262,265,268,270,272,277,278,282,284,286,287,290,293,295,296,299,303,305,308,310,312,314,316,318,321,323,327],[174,38,38,213,175,38],"commenter\u002Fneutral\u002Fidea",[215,38,38,216,217,38],"26625604","commenter\u002Fpositive\u002Fidea","loevborg",[166,38,44,219,167,38],"project\u002Fneutral\u002Fdocs",[221,38,38,222,223,38],"26628667","other\u002Fneutral\u002Fdocs","mellosouls",[53,33,38,225,11,33],"maker\u002Fneutral\u002Fidea",[139,33,44,227,140,38],"project\u002Fneutral\u002Fidea",[229,33,44,227,85,38],"26631620",[203,33,38,231,11,33],"maker\u002Fneutral\u002Fexecution",[206,33,38,233,11,33],"maker\u002Fneutral\u002Fnone",[123,33,44,235,124,38],"project\u002Fneutral\u002Fexecution",[237,33,38,231,11,33],"26633365",[88,33,33,239,89,38],"project\u002Fcritical\u002Fexecution",[241,33,38,242,11,33],"26633397","commenter\u002Fcritical\u002Fidea",[195,33,44,227,196,38],[181,34,38,245,182,38],"other\u002Fneutral\u002Fidea",[247,34,38,248,11,33],"26633524","commenter\u002Fneutral\u002Fnone",[65,44,45,250,66,38],"project\u002Fpositive\u002Fidea",[127,44,45,252,128,38],"project\u002Fpositive\u002Fnone",[131,44,33,254,132,38],"project\u002Fcritical\u002Fnone",[256,44,38,257,11,33],"26633569","maker\u002Fneutral\u002Fdocs",[259,44,38,257,11,33],"26710203",[261,44,38,231,11,33],"26633552",[263,18,45,250,264,38],"26623897","AnonHP",[266,45,44,219,267,38],"26626477","softwaredoug",[84,269,45,250,85,38],6,[154,269,44,271,155,38],"project\u002Fmixed\u002Fdesign",[273,274,38,275,276,38],"26632621",7,"other\u002Fneutral\u002Fnone","timonoko",[188,32,38,245,189,38],[279,280,45,250,281,38],"26629022",9,"mdeck_",[283,280,38,257,11,33],"26633620",[92,285,45,250,93,38],10,[107,40,44,227,108,38],[288,40,38,213,289,38],"26625022","globular-toast",[291,40,38,213,292,38],"26626634","macintux",[294,40,38,216,85,38],"26631651",[150,199,44,227,151,38],[297,31,45,250,298,38],"26628302","roydivision",[300,301,45,250,302,38],"26624157",14,"densekernel",[304,301,38,257,11,33],"26633716",[306,307,38,275,73,38],"26627015",15,[309,307,38,275,73,38],"26627884",[311,307,38,242,11,33],"26633702",[72,307,38,313,73,38],"commenter\u002Fcritical\u002Fexecution",[315,307,38,275,73,38],"26634632",[96,317,45,250,97,38],16,[319,320,45,250,140,38],"26623700",17,[103,322,45,250,104,38],18,[324,325,45,252,326,38],"26623722",19,"lnenad",[328,329,45,250,330,38],"26628340",20,"dvirsky",[],[333,337,342,347,352,356],{"id":334,"name":335,"points":336,"category":20},"26579936","VS Code Theme Studio",375,{"id":338,"name":339,"points":340,"category":341},"26624341","Coolify",345,"infrastructure",{"id":343,"name":344,"points":345,"category":346},"26609397","Selfstudyclassics",278,"learning_science",{"id":348,"name":349,"points":350,"category":351},"26647424","Roleplayful",133,"consumer_social",{"id":353,"name":354,"points":355,"category":341},"26620738","Nettu Scheduler",129,{"id":357,"name":358,"points":359,"category":360},"26646110","Three Things Daily",121,"productivity",false,"v2",{"id":364,"name":5,"line":6,"ai":361,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":365,"top":18,"kw":366,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":367,"url":9,"mix":368,"praise":81,"objection":116,"sub":21},26622548,0.5,[24,25,26,27],"0030330031030551005353050530035500005555",[31,32,33,34],1793991025944]