【问题标题】:How to print a number from a specific row and column如何从特定的行和列打印数字
【发布时间】:2019-05-23 12:52:09
【问题描述】:

我有一个 4x2 矩阵文件:

204 4
504 7
204 5
404 8

我还有一个名为“204”、“504”、“204”和“404”的 4 个文件。所以,我想打印相应目录内文件中第二列的编号。

我想在“204”目录中创建一个包含“4”的文件,依此类推。

【问题讨论】:

标签: linux bash shell awk


【解决方案1】:

三种方式

将 LINE_NUMBER 和 COL_NUMBER 替换为 1、2、3...

awk:

$>awk '{if(NR==LINE_NUMBER) print $COL_NUMBER}' file.txt.

sed:

$>sed -n LINE_NUMBER  file.txt | cut -d " " -f COL_NUMBER

头和尾:

$>head -n LINE_NUMBER file.txt | tail -n + LINE_NUMBER | cut -d " " -f COL_NUMBER

【讨论】:

    【解决方案2】:

    cut -d 允许您指定分隔符,例如空格字符。您可以使用它来解析文件内容(来自cat 命令)。

    【讨论】:

      【解决方案3】:

      将您的矩阵保存在名为file.txt的文件中

      ▶ ll
      total 8
      -rw-r--r--  1 noskillguy  staff    24B May 23 23:41 file.txt
      ▶ cat file.txt
      204 4
      504 7
      204 5
      404 8
      

      执行以下命令,将输入上述文件

      ▶ while read p; do declare -a arr=(`echo $p`); mkdir -p ${arr[1]}; echo ${arr[2]} > ${arr[1]}/${arr[2]}.txt ; done < file.txt
      ▶ tree
      .
      ├── 204
      │   ├── 4.txt
      │   └── 5.txt
      ├── 404
      │   └── 8.txt
      ├── 504
      │   └── 7.txt
      └── file.txt
      
      3 directories, 5 files
      ▶ tail */*
      ==> 204/4.txt <==
      4
      
      ==> 204/5.txt <==
      5
      
      ==> 404/8.txt <==
      8
      
      ==> 504/7.txt <==
      7
      

      我正在逐行读取file.txt,然后为每一行创建一个数组declare -a arr=(`echo $p`),然后使用数组的第一个对象创建一个目录mkdir -p ${arr[1]},第二个对象创建一个文件及其内容@ 987654326@

      【讨论】:

        猜你喜欢
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        • 1970-01-01
        相关资源
        最近更新 更多