Skip to content

Commit 90155e5

Browse files
added 31st cli tip
1 parent 1057a7c commit 90155e5

File tree

10 files changed

+116
-8
lines changed

10 files changed

+116
-8
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ I'm addicted to reading fantasy/sci-fi books, so I have a [blog](https://learnby
6969

7070
## Tips
7171

72+
* [CLI tip 31: concatenate files column wise](https://learnbyexample.github.io/tips/cli-tip-31/)
7273
* [Python tip 31: next() function](https://learnbyexample.github.io/tips/python-tip-31/)
7374
* [Vim tip 29: greedy quantifiers](https://learnbyexample.github.io/tips/vim-tip-29/)
7475
* [CLI tip 30: extract only the matching portions](https://learnbyexample.github.io/tips/cli-tip-30/)

atom.xml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,68 @@
55
<link href="https://learnbyexample.github.io/atom.xml" rel="self" type="application/atom+xml"/>
66
<link href="https://learnbyexample.github.io"/>
77
<generator uri="https://www.getzola.org/">Zola</generator>
8-
<updated>2023-07-25T00:00:00+00:00</updated>
8+
<updated>2023-08-01T00:00:00+00:00</updated>
99
<id>https://learnbyexample.github.io/atom.xml</id>
10+
<entry xml:lang="en">
11+
<title>CLI tip 31: concatenate files column wise</title>
12+
<published>2023-08-01T00:00:00+00:00</published>
13+
<updated>2023-08-01T00:00:00+00:00</updated>
14+
<link rel="alternate" href="https://learnbyexample.github.io/tips/cli-tip-31/" type="text/html"/>
15+
<id>https://learnbyexample.github.io/tips/cli-tip-31/</id>
16+
<content type="html">&lt;p&gt;The &lt;code&gt;paste&lt;&#x2F;code&gt; command is typically used to merge two or more files column wise. By default, &lt;code&gt;paste&lt;&#x2F;code&gt; adds a tab character between corresponding lines of input files.&lt;&#x2F;p&gt;
17+
&lt;pre data-lang=&quot;ruby&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-ruby &quot;&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span&gt;$ cat colors_1.txt
18+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Blue
19+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Brown
20+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Orange
21+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Purple
22+
&lt;&#x2F;span&gt;&lt;span&gt;$ cat colors_2.txt
23+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Black
24+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Blue
25+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Green
26+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Orange
27+
&lt;&#x2F;span&gt;&lt;span&gt;
28+
&lt;&#x2F;span&gt;&lt;span&gt;$ paste colors_1.txt colors_2.txt
29+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Blue Black
30+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Brown Blue
31+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Orange Green
32+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#5597d6;&quot;&gt;Purple Orange
33+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
34+
&lt;p&gt;You can use the &lt;code&gt;-d&lt;&#x2F;code&gt; option to change the delimiter between the columns. The separator is added even if the data has been exhausted for some of the input files.&lt;&#x2F;p&gt;
35+
&lt;pre data-lang=&quot;ruby&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-ruby &quot;&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span&gt;$ paste &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;|&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4 5&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;6 8&lt;&#x2F;span&gt;&lt;span&gt;)
36+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;6
37+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;7
38+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;||&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;8
39+
&lt;&#x2F;span&gt;&lt;span&gt;
40+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#7f8989;&quot;&gt;# note that the space between -d and empty string is necessary here
41+
&lt;&#x2F;span&gt;&lt;span&gt;$ paste &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;d &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;6 8&lt;&#x2F;span&gt;&lt;span&gt;)
42+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;16
43+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;27
44+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;38
45+
&lt;&#x2F;span&gt;&lt;span&gt;
46+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#7f8989;&quot;&gt;# use newline separator to interleave file contents
47+
&lt;&#x2F;span&gt;&lt;span&gt;$ paste &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39;\n&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;11 12&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;101 102&lt;&#x2F;span&gt;&lt;span&gt;)
48+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;11
49+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;101
50+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;12
51+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;102
52+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
53+
&lt;p&gt;You can use empty files to get multicharacter separation between the columns. The &lt;code&gt;pr&lt;&#x2F;code&gt; command is better suited for this task.&lt;&#x2F;p&gt;
54+
&lt;pre data-lang=&quot;ruby&quot; style=&quot;background-color:#f5f5f5;color:#1f1f1f;&quot; class=&quot;language-ruby &quot;&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span&gt;$ paste &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39; : &amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;dev&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;null &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;dev&lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;null &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4 6&lt;&#x2F;span&gt;&lt;span&gt;)
55+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;1 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4
56+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;2 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;5
57+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;6
58+
&lt;&#x2F;span&gt;&lt;span&gt;
59+
&lt;&#x2F;span&gt;&lt;span&gt;$ pr &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;mts&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d07711;&quot;&gt;&amp;#39; : &amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;(seq &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4 6&lt;&#x2F;span&gt;&lt;span&gt;)
60+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;1 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;4
61+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;2 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;5
62+
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;3 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#72ab00;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b3933a;&quot;&gt;6
63+
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
64+
&lt;p&gt;&lt;strong&gt;Video demo&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
65+
&lt;p align=&quot;center&quot;&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; loading=&quot;lazy&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;vnGeEO3d42U&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;&lt;&#x2F;p&gt;
66+
&lt;br&gt;
67+
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;info.svg&quot; alt=&quot;info&quot; &#x2F;&gt; See &lt;a href=&quot;https:&#x2F;&#x2F;learnbyexample.github.io&#x2F;cli_text_processing_coreutils&#x2F;paste.html&quot;&gt;paste command&lt;&#x2F;a&gt; chapter from my &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;learnbyexample&#x2F;cli_text_processing_coreutils&quot;&gt;Command line text processing with GNU Coreutils&lt;&#x2F;a&gt; ebook for more details.&lt;&#x2F;p&gt;
68+
</content>
69+
</entry>
1070
<entry xml:lang="en">
1171
<title>Python tip 31: next() function</title>
1272
<published>2023-07-25T00:00:00+00:00</published>

sitemap.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@
435435
</url>
436436
<url>
437437
<loc>https://learnbyexample.github.io/tips/</loc>
438-
<lastmod>2023-07-25</lastmod>
438+
<lastmod>2023-08-01</lastmod>
439439
</url>
440440
<url>
441441
<loc>https://learnbyexample.github.io/tips/cli-tip-1/</loc>
@@ -533,6 +533,10 @@
533533
<loc>https://learnbyexample.github.io/tips/cli-tip-30/</loc>
534534
<lastmod>2023-07-11</lastmod>
535535
</url>
536+
<url>
537+
<loc>https://learnbyexample.github.io/tips/cli-tip-31/</loc>
538+
<lastmod>2023-08-01</lastmod>
539+
</url>
536540
<url>
537541
<loc>https://learnbyexample.github.io/tips/cli-tip-4/</loc>
538542
<lastmod>2022-06-14</lastmod>

0 commit comments

Comments
 (0)