小编Ed *_*ton的帖子

“head”读取/消耗的输入行数可以多于其输出的行数吗?

给定以下 3 个脚本:

  1. printf 'a\nb\nc\n' > file && { head -n 1; cat; } < file
  2. printf 'a\nb\nc\n' | { head -n 1; cat; }
  3. { head -n 1; cat; } < <(printf 'a\nb\nc\n')

我期望每个的输出是:

a
b
c
Run Code Online (Sandbox Code Playgroud)

但对于其中一些系统,在某些系统上,情况并非如此。例如,在 cygwin 上:

$ printf 'a\nb\nc\n' > file && { head -n 1; cat; } < file
a
b
c
Run Code Online (Sandbox Code Playgroud)

$ printf 'a\nb\nc\n' | { head -n 1; cat; }
a
Run Code Online (Sandbox Code Playgroud)

$ { head -n 1; cat; } < <(printf 'a\nb\nc\n')
a …
Run Code Online (Sandbox Code Playgroud)

bash text-processing head

14
推荐指数
1
解决办法
903
查看次数

搜索、分离和清除 txt 值

真正让我感到困惑的是引号。

我有一个file.txt像这样的行:

{"a":"town, state, country","e":["john@company.com"],"n":"john smith"}
{"a":"town, state, country","e":["zac@company.com","zacsurname@gmail.com"],"n":"zac surname"}
{"a":"town, state, country","n":"jane doe"}
Run Code Online (Sandbox Code Playgroud)

我只在寻找名字和电子邮件,并丢弃没有两者的数据。所以output.txt上面的 3 行应该是:

john john@company.com
zac zac@company.com
zac zacsurname@gmail.com
Run Code Online (Sandbox Code Playgroud)

我试过 awk、nawk、pcregrep、sed、perl,例如:

awk -F ":" '$1 ~ /^e/ && $1 ~ /^n/ { print $1,$1 }' file.txt > output.txt
awk -F "\"e\":\"" '{ print $1}' file.txt > output.txt
nawk '/\"e\":[\"/, /\"]/' file.txt > output.txt
pcregrep -o '(?<=[\").*?(?=\"])' <<< file.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

它都不起作用。感谢您的帮助。

grep awk json

5
推荐指数
1
解决办法
107
查看次数

awk - 打印 $0 忽略 OFS

我想输出每个列/字段,但是当我使用变量执行此操作时,它会忽略作为单个的$0默认变量,因此仍然会打印。OFSspace:

这是我尝试过的命令:

cat /etc/passwd | awk -F':' '{print $0}'
Run Code Online (Sandbox Code Playgroud)

给定此示例输入:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

我从命令中得到以下输出:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

但我希望我的输出看起来像这样:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助 :)

awk

3
推荐指数
1
解决办法
293
查看次数

如何比较两个文件以获得匹配的记录?

我有 2 个带*分隔符的文件,每个文件有 3k 条记录。

不同的岗位有共同的领域。在file1(count=1590) 中,位置为 1,在file2(2707) 中,位置为 2。file2 计数和输出计数应该相同。注意:在 file2 中,第二个位置编号将出现在 file1 中,我们需要取相应的 $3 值,即 1 或 0

在这两个文件中,总计数为 3k,两个文件都是 * 分隔符,其中 file1 $1 和 file2 $2 是两个文件的公共字段,我们需要检查公共字段是否有 0 或 1 存在于 file1 $3 中。我们需要写这样的文件 1==>000000001 D056002001 1 2==>000000003 D079291785 0, $1=seqno,$2=matched9digit value folwed by D 和 $3 无论是 0 还是 1

file2 中的所有 $2 值将在 file1 中显示为 $1 值。

文件 1:

D056002001**1
D005356216**1
D079291785**0
D610350290**1
Run Code Online (Sandbox Code Playgroud)

文件2:

000000001*D056002001
000000002*D610350290
000000003*D079291785
Run Code Online (Sandbox Code Playgroud)

输出:

000000001*D056002001*1 …
Run Code Online (Sandbox Code Playgroud)

awk

2
推荐指数
1
解决办法
158
查看次数

使用 Bash 脚本在 UNIX 中对 XML 文件进行排序?

我正在尝试按字母顺序对看起来像这样的 XML 文件进行排序。这是一个更大的 bash 脚本的一部分,因此它需要在该脚本中工作:

<Module>
    <Settings>
        <Dimensions>
            <Volume>13000</Volume>
            <Width>5000</Width>
            <Length>2000</Length>
        </Dimensions>
        <Stats>
            <Mean>1.0</Mean>
            <Max>3000</Max>
            <Median>250</Median>
        </Stats>
    </Settings>
    <Debug>
        <Errors>
            <Strike>0</Strike>
            <Wag>1</Wag>
            <MagicMan>0</MagicMan>
        </Errors>
    </Debug>
</Module>
Run Code Online (Sandbox Code Playgroud)

我希望最终结果看起来像这样,我只希望对最里面的标签进行排序:

<Module>
    <Settings>
        <Dimensions>
            <Length>2000</Length>
            <Volume>13000</Volume>
            <Width>5000</Width>
        </Dimensions>
        <Stats>
            <Max>3000</Max>
            <Mean>1.0</Mean>
            <Median>250</Median>
        </Stats>
    </Settings>
    <Debug>
        <Errors>
            <MagicMan>0</MagicMan>
            <Strike>0</Strike>
            <Wag>1</Wag>
        </Errors>
    </Debug>
</Module>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用这样的排序,其中 -t 按 > 分隔符排序,然后按第 4 列排序,这将在内部,但它不起作用。

sort -t'>' -k4 file > final.xml
Run Code Online (Sandbox Code Playgroud)

我得到时髦的输出,它用排序的内部标签对其他列进行排序。

任何帮助,将不胜感激

xml awk sort

2
推荐指数
1
解决办法
175
查看次数

如何在每第 n 行后开始一个新列?

我在 Linux 系统上有一个包含 3 列的文件(以逗号分隔)。我想在每第四行之后开始新的列。

输入:

col1,col2,col3 
1,disease1,high
1,disease2,low 
1,disease3,high
col1,col2,col3 
2,disease1,low 
2,disease2,low 
2,disease3,high
col1,col2,col3
3,disease1,low
3,disease2,low
3,disease3,low
Run Code Online (Sandbox Code Playgroud)

预期输出:

col1,col2,col3,col1,col2,col3,col1,col2,col3
1,disease1,high,2,disease1,low,3,disease1,low
1,disease2,low,2,disease2,low,3,disease2,low
1,disease3,high,2,disease3,high,disease3,low
Run Code Online (Sandbox Code Playgroud)

即我想要 4 行输出,每行都是用逗号连接输入的每第四行的结果。

command-line shell awk perl text-processing

1
推荐指数
1
解决办法
1114
查看次数

如何使用 awk 过滤表

我想知道如何根据每个感兴趣的列中的特定值来过滤具有多个列的表。

我这里有这个例子:

    Chr1    16644   0       0       1       1
    Chr1    16645   0       0       1       1
    Chr1    16646   0       0       1       1
    Chr1    16647   0       0       1       1
    Chr1    16648   0       0       1       1
    Chr1    16649   0       0       1       1
    Chr1    16650   0       0       1       1
    Chr1    16651   0       0       1       1
    Chr1    16782   0       0       0       0
    Chr1    16783   0       0       0       0
    Chr1    16784   0       0       0       0
    Chr1    16785   0       0       0       0
    Chr1    16786   0       0       1       1 …
Run Code Online (Sandbox Code Playgroud)

awk filter table

1
推荐指数
1
解决办法
166
查看次数

如何从 csv 的每一行中提取一个值?

我有大量的数据格式如下:

value1,value2,value3
value1,value2,value3
value1,value2,value3
etc..
Run Code Online (Sandbox Code Playgroud)

我想知道如何从每一行中只提取 value2 并输出该结果。我假设我会以某种方式使用 awk?

grep awk csv

0
推荐指数
1
解决办法
49
查看次数

sed 将上一行的第一个单词添加到下一行的开头,如果

我遇到了一个问题,无法找到解决以下问题的解决方案。

如果它们以特殊字符开头,我想将一行的第一个单词复制到以下 n 行的开头,否则复制新单词。

输入:

aaa random words

`dsf

|df

bbb

|d
Run Code Online (Sandbox Code Playgroud)

输出:

aaa random words

aaa`dsf

aaa|df

bbb

bbb|d
Run Code Online (Sandbox Code Playgroud)

sed awk regular-expression replace text-formatting

0
推荐指数
1
解决办法
111
查看次数