标签: grep

使用键 -> 值结构合并两个文件

我正在寻找想法,而不是 shell(linux) 中下一个问题的完整解决方案。最好的解决方案是什么?(awk、while 循环、sed ....)

我有两个具有相同行结构的文件:key-value-value. 我想合并这两个文件。如果该值不存在,脚本将插入一个新行。如果存在,脚本会更新这些值(通过将它们相加)。

Example:
File 1:

john-15-40
doo-10-91
mary-14-19
foo-11-0

File 2:

foo-110-10
john-22-11
ghost-1000-1000

Result:
foo-121-10
john-37-51
ghost-1000-1000
doo-10-91
mary-14-19
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash shell awk grep sed

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

使用 grep 查找以字符开头且后面带有数字的字符串

好的,我有一个包含这样的数字的文件:

L21479
Run Code Online (Sandbox Code Playgroud)

我想做的是使用 grep (或类似的工具)来查找文件中具有以下格式的所有字符串:

L#####
Run Code Online (Sandbox Code Playgroud)

# 将是数字。SO 一个 L 后跟 5 个数字。

这在 grep 中可能吗?我应该加载文件并执行正则表达式吗?

grep

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

grep 从分隔符之前的行的第一部分开始

我必须从此数据 test1.txt 中 grep :

1 - Billing_Type
604 - Customer_Name
2 - Contact_Name
3 - Customer_Phone_Number
4 - Contact_Phone_Number
5 - Customer_Type
6 - Reason_Code
7 - CALLE 1
8 - CALLE 2
9 - NUMERO
10 - ID
11 - Service Address
1700001031 - Serial_Number
1700001008 - STB_REF_AP_ID
1700001027 - Smart_Card_ID
Run Code Online (Sandbox Code Playgroud)

我正在循环中比较文件的第一部分,例如 1700001031,等,然后将文件的第二部分复制到变量中1,例如,,。8Serial_NumberBilling_TypeCALLE 2

这是我使用过的声明:示例声明

grep -w 1 test1.txt | cut -d'-' -f2 |tr -d ' '
Run Code Online (Sandbox Code Playgroud)

但这个语句的问题是对于值 1 和 …

shell grep

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

grep 排除第一个字符

如何找到图案位于线条中间的线条。即在下面的例子中。我只想获取第 8 行,但排除第 1 行和第 5 行 grep“@”

我知道我grep "^@"只会在第一个字符中查找,但如何排除它?

@DD65WKN1:203:H7T67ADXX:2:2216:19936:100494 1:N:0:
GTCGTTCTTCAGGTTCTC
+
FFFFFIIIIFFFIFFFFF
@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
TAAAGTAGCAAAAATG
+
FFFFFFFFIFBFIFFF@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
TAAAGTAGCAAAAATG
+
FFFFFFFFIFBFIFFF
Run Code Online (Sandbox Code Playgroud)

谢谢

unix bash shell grep

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

ls 管道到 grep 与 ls 文件 glob

当我用它来查看目录中是否有特定文件时,通过管道ls传送到grep不起作用

 casper@fooserver:/home/log$ ls -ltr | grep  *FOO-VOL2*
Run Code Online (Sandbox Code Playgroud)

但是当我使用ls文件通配符时,我得到结果:

casper@fooserver:/home/log$ ls -ltr  *FOO-VOL2*
-rw-rw-rw- 1 casper casper   11489 Sep 24 18:00 FOO-VOL2.20140924.log.gz
-rw-rw-rw- 1 casper casper   11885 Sep 25 18:00 FOO-VOL2.20140925.log.gz
-rw-rw-rw- 1 casper casper       0 Sep 26 08:00 FOO-VOL2.sessiondump.log
-rw-rw-rw- 1 casper casper   60906 Sep 26 18:00 FOO-VOL2.20140926.log
-rw-rw-rw- 1 casper casper   58503 Sep 29 09:00 FOO-VOL2.20140929.log
-rw-rw-rw- 1 casper casper 8259128 Sep 29 09:00 FOO-VOL2.sys.log
Run Code Online (Sandbox Code Playgroud)

有什么区别 - grep 到管道应该可以工作。

bash grep ls

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

如何使用 git 提取提交者的电子邮件?

如果我有一个特定的字符串,我如何使用例如git log从命令行查找提交者的电子邮件?
我不想看到提交。我只希望“one-liner”命令只给我作者的电子邮件。

注意:没有提交 ID。我只有一个搜索字符串。我的意思是我知道肯定是提交的一部分的字符串。

@axiac 发表评论后更新:
我有一个字符串 X,它在仅由 1 个提交者引入的意义上是“唯一”的。提交者将其添加到 file 中foo.java
我只想拥有字符串Xfoo.java找到添加该字符串的提交者的电子邮件

linux git grep git-log

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

在 bash 上反转 uniq 命令

我正在尝试查找特定电子邮件 ID 重复的次数。uniq -c使用我得到的输出进行管道传输420 aol.com,但我需要aol.com 420如何执行此操作,因为uniq -c作为前缀计数应用

unix bash awk grep sed

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

Bash:如何检查文件的第一个字符是否为 {

如果文件在变量中filename,有什么方法可以在 Bash 中做一个简单的检查以确定文件内容的第一个字符是否为{

如果有一种方法可以在不加载整个文件的情况下执行此操作,那就太好了...

塔!

#!/bin/bash
if #SOME_TEST "${filename}" then
  echo "yes, first char of file is {"
else
  echo "no"
fi
Run Code Online (Sandbox Code Playgroud)

bash awk grep

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

使用 bash 仅获取 linux 上的子网掩码号

我已经尝试过这个建议

ip -o -f inet addr show | awk '/scope global/ {print $4}'

但输出带有子网掩码的 IP 地址:

192.168.1.108/24

我只想要号码 24

linux bash grep sh subnet

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

grep 模式直到特定字符 (:)

考虑以下几点file.txt

@A00940:70:HTCYYDRXX:2:2101:1561:1063 1:N:0:ATCACG
TAGCACTGGGCTGTGAGACTGTCGTGTGTGCTTTGGATCAAGCAAGATCGG
+
FFFFFFFFFFFFFFFFFFFFFFFFFF:FFF::FFFFFFF:FFFFFFFFFFF
@A00940:70:HTCYYDRXX:2:2101:2175:1063 1:N:0:ATCACG
CGCCCCCTCCTCCGGTCGCCGCCGCGGTGTCCGCGCGTGGGTCCTGAGGGA
+
FFFF:FFFFF:FFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFF
@A00940:70:HTCYYDRXX:2:2101:2772:1063 1:N:0:ATCACG
TGGTGGCAGGCACCTGTAATCCCAGCTACTCGGGAGCCTGAGGCAGGAGAA
Run Code Online (Sandbox Code Playgroud)

我正在尝试以最多但不包括冒号grep开头的行的所有字符,在本例中,结果将是.@:A00940

我试过这个:

cat file.txt | grep '[^:]*'

和这个:

cat file.txt | grep '^(.*?):'

但是这两个命令都不起作用,这是为什么呢?

regex grep

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

标签 统计

grep ×10

bash ×6

awk ×3

shell ×3

linux ×2

sed ×2

unix ×2

git ×1

git-log ×1

ls ×1

regex ×1

sh ×1

subnet ×1