如何从特定的行和列中打印数字

时间:2019-05-23 12:52:10

标签: linux bash shell awk

我有一个4x2矩阵文件:

204 4
504 7
204 5
404 8

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

3种方式

将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 :(得分:0)

将矩阵保存在名为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]},然后使用第二个对象创建文件及其内容echo ${arr[2]} > ${arr[1]}/${arr[2]}.txt