{"id":11215,"date":"2018-05-31T09:47:06","date_gmt":"2018-05-31T07:47:06","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/"},"modified":"2025-10-24T09:22:42","modified_gmt":"2025-10-24T07:22:42","slug":"an-awk-filter-to-truncate-or-wrap-around-tabular-output","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/","title":{"rendered":"An awk filter to truncate or wrap around tabular output"},"content":{"rendered":"<p>In my previous blog &#8220;idql and its column output&#8221;, see link\u00a0<a href=\"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/\" target=\"_blank\">here<\/a>, I provided a small awk filter to reflow the idql output&#8217;s columns by wrapping their content around. Later I came of thinking that it could be useful to be able to truncate the columns instead, in order to have an even compacter output. A shorter, denser table can certainly help is some cases, such as when a quick overview of a query&#8217;s result is enough to get an idea of its correctness or its performance.<br \/>\nOf course, in case of truncation, a user-definable trailing string, defaulting to the ellipsis, would be appended to show that a truncation has been applied; this is to avoid to present incomplete and therefore incorrect data to an unsuspecting or distracted reader.<br \/>\nSo, here is the script:<\/p>\n<pre class=\"brush: c; gutter: true; first-line: 1\"># Usage:\n#    gawk [-v maxw=nn] [-v truncate=0|1] [-v ellipsis=...] [-v wrap=1|0] -f compact_wwa.awk file\n# or:\n#    cmd | gawk [-v maxw=nn] [-v truncate=0|1] [-v ellipsis=...] [-v wrap=1|0] -f compact_wwa.awk\n# where:\n#     missing numeric parameters assume the value 0;\n#     maxw is the maximum column width and defaults to 32;\n#         characters outside this limit are either wrapped around in their own column or truncated, depending on the parameters truncate and wrap;\n#     wrapping is the default and has priority over truncating;\n#     truncate=0 wrap=0 --&gt; wrapping around;\n#     truncate=0 wrap=1 --&gt; wrapping around;\n#     truncate=1 wrap=0 --&gt; truncate;\n#     truncate=1 wrap=1 --&gt; wrapping around;\n#     truncating is therefore only done when explicitly and unambiguously requested; this is to preserve data integrity whenever possible;\n#     ellipsis string is only considered when truncating and defaults to '...'; thus, there is always one to warn of truncation;\n# example:\n#     gawk -v maxw=50 -f compact_wwa.awk tmp_file  | less -S\n#     C. Cervini, dbi-services;\nBEGIN {\n   if (!maxw) maxw = 32\n   if (!truncate)\n      if (!wrap)\n         wrap = 1\n      else;\n   else if (!wrap);\n   else\n      truncate = 0\n   if (!ellipsis)\n      ellipsis = \"...\"\n   while (getline &amp;&amp; !match($0, \/^([0-9]+&gt; )+\/));\n   header = substr($0, RLENGTH + 1)\n   getline\n   nbFields = NF\n   fs[0] = 0; fw[0] = -1 # just so that fs[1] = 1, see below;\n   headerLine = \"\"; sepLine = \"\"\n   for (i = 1; i &lt;= NF; i++) {\n      fs[i] = fs[i - 1] + fw[i - 1] + 2\n      fw[i] = length($i)\n      Min = min(fw[i], maxw)\n      if (1 == truncate)\n         Min = max(Min, length(ellipsis))\n      sepLine = sepLine sprintf(\"%s  \", substr($0, fs[i], Min))\n   }\n   printWithWA(header)\n   printf(\"%s\\n\", sepLine)\n}\n{\n   if (match($0, \/^\\([0-9]+ rows? affected\\)\/)) {\n      print\n      exit\n   }\n   printWithWA($0)\n}\nfunction printWithWA(S) {\n   do {\n      left_over = \"\"\n      for (i = 1; i &lt;= nbFields; i++) {\n         Min = min(fw[i], maxw)\n         if (1 == truncate)\n            Min = max(Min, length(ellipsis))\n         columnS = substr(S, fs[i], Min)\n         if (1 == truncate) {\n            restColumn = substr(S, fs[i] + Min, fw[i] - Min); gsub(\/ +$\/, \"\", restColumn)\n            if (restColumn)\n               columnS = substr(columnS, 1, length(columnS) - length(ellipsis)) ellipsis\n         }\n         printf(\"%s  \", columnS)\n         restS = substr(S, fs[i] + Min, fw[i] - Min)\n         if (length(restS) &gt; 0) {\n            left_over = left_over sprintf(\"%-*s  \", fw[i], restS)\n         }\n         else\n            left_over = left_over sprintf(\"%*s  \", fw[i], \"\")\n      }\n      printf \"\\n\"\n      gsub(\/ +$\/, \"\", left_over)\n      S = left_over\n   } while (left_over &amp;&amp; wrap)\n}\nfunction min(x, y) {\n   return(x &lt;= y ? x : y)\n}\nfunction max(x, y) {\n   return(x &gt;= y ? x : y)\n}\n<\/pre>\n<p><strong>Example of execution<\/strong><br \/>\n<code><br \/>\nidql dmtest -Udmadmin -Pdmadmin -w500 &lt;&lt;EoQ | gawk -v maxw=25 -v truncate=1 -v ellipsis=\"(...)\" -f compact_wwa.awk | less -S<br \/>\nselect r_object_id, user_name, user_os_name, user_address, user_group_name, user_privileges, owner_def_permit, world_def_permit, group_def_permit, default_folder, user_db_name, description,<br \/>\nacl_domain, acl_name, user_os_domain, home_docbase, user_state, client_capability, globally_managed, user_delegation, workflow_disabled, alias_set_id, user_source, user_ldap_dn, user_xprivileges,<br \/>\nfailed_auth_attempt, user_admin, user_global_unique_id, user_login_name, user_login_domain, user_initials, USER_PASSWORD, user_web_page, first_failed_auth_utc_time, last_login_utc_time,<br \/>\ndeactivated_utc_time, deactivated_ip_addr, root_log_dir<br \/>\nfrom<br \/>\ndm_user<br \/>\ngo<br \/>\nexit<br \/>\nEoQ<br \/>\n<\/code><br \/>\nResult:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23138\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\" alt=\"blog10\" width=\"300\" height=\"199\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23139\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog11.png\" alt=\"blog11\" width=\"300\" height=\"216\" \/><\/a><br \/>\nHere the ellipsis string has been set to &#8220;(&#8230;)&#8221;.<br \/>\nOne could wonder why there are 2 apparently contradictory options to specify the wrapping, truncate and wrap. Wouldn&#8217;t one be enough since truncate = non wrap ? And it would also remove the 7 lines of validation and prioritization at the beginning. One of the reason is comfort as it is often easier to think in positive rather than in negative logic. The other is that both options are not exactly opposite; the opposite of truncate can be &#8220;do nothing&#8221; as well as &#8220;wrap around&#8221;, and vice-versa. It is better to be explicit rather than implicit so to avoid any ambiguity.<br \/>\nWhat if a do-nothing filter is needed while still calling compact_wwa.awk (have I said that wwa stands for &#8220;with wrap-around&#8221; ?), e.g. from another script that passes the command-line options to it ? Just specify some large value for maxw and that&#8217;s it. As its name suggests it, compact_wwa.awk only attempts to shrink columns if larger than maxw; narrower columns are not modified.<\/p>\n<h4>Possible emprovements<\/h4>\n<p>There are still lots of ways to enhance this script. For instance, one of them is to provide a maxw per column. Here, the parameter maxw is applied to all the columns but it would be nice to compress (whether by truncating or by wrapping around) only the uninteresting columns so to have more space for the relevant ones.<br \/>\nAnother way would be to make the script work both ways, enlarging columns as well as shrinking them, which could sometimes simplify their parsing since they&#8217;ll all have the same width. Maybe the next time&#8230;<\/p>\n<h4>Wrapping up<\/h4>\n<p>I think this script can prove useful to those who need to work with idql and have to deal with its limits. Countless times in the past, I had to open a DQL extraction&#8217;s output in UltraEdit to manually shrink all those columns. Too bad that I didn&#8217;t have this little utility before, it could have spared me tons of time doing all this tedious work.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my previous blog &#8220;idql and its column output&#8221;, see link\u00a0here, I provided a small awk filter to reflow the idql output&#8217;s columns by wrapping their content around. Later I came of thinking that it could be useful to be able to truncate the columns instead, in order to have an even compacter output. A [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":11216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[525],"tags":[],"type_dbi":[],"class_list":["post-11215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-content-management"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>An awk filter to truncate or wrap around tabular output - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An awk filter to truncate or wrap around tabular output\" \/>\n<meta property=\"og:description\" content=\"In my previous blog &#8220;idql and its column output&#8221;, see link\u00a0here, I provided a small awk filter to reflow the idql output&#8217;s columns by wrapping their content around. Later I came of thinking that it could be useful to be able to truncate the columns instead, in order to have an even compacter output. A [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-31T07:47:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-24T07:22:42+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1956\" \/>\n\t<meta property=\"og:image:height\" content=\"1298\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"An awk filter to truncate or wrap around tabular output\",\"datePublished\":\"2018-05-31T07:47:06+00:00\",\"dateModified\":\"2025-10-24T07:22:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\"},\"wordCount\":490,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\",\"articleSection\":[\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\",\"name\":\"An awk filter to truncate or wrap around tabular output - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\",\"datePublished\":\"2018-05-31T07:47:06+00:00\",\"dateModified\":\"2025-10-24T07:22:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png\",\"width\":1956,\"height\":1298},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An awk filter to truncate or wrap around tabular output\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"An awk filter to truncate or wrap around tabular output - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/","og_locale":"en_US","og_type":"article","og_title":"An awk filter to truncate or wrap around tabular output","og_description":"In my previous blog &#8220;idql and its column output&#8221;, see link\u00a0here, I provided a small awk filter to reflow the idql output&#8217;s columns by wrapping their content around. Later I came of thinking that it could be useful to be able to truncate the columns instead, in order to have an even compacter output. A [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/","og_site_name":"dbi Blog","article_published_time":"2018-05-31T07:47:06+00:00","article_modified_time":"2025-10-24T07:22:42+00:00","og_image":[{"width":1956,"height":1298,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png","type":"image\/png"}],"author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"An awk filter to truncate or wrap around tabular output","datePublished":"2018-05-31T07:47:06+00:00","dateModified":"2025-10-24T07:22:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/"},"wordCount":490,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png","articleSection":["Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/","url":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/","name":"An awk filter to truncate or wrap around tabular output - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png","datePublished":"2018-05-31T07:47:06+00:00","dateModified":"2025-10-24T07:22:42+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog10.png","width":1956,"height":1298},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/an-awk-filter-to-truncate-or-wrap-around-tabular-output\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"An awk filter to truncate or wrap around tabular output"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11215"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11215\/revisions"}],"predecessor-version":[{"id":41164,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11215\/revisions\/41164"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11216"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11215"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}