我正在寻找想法,而不是 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)
我怎样才能做到这一点?
好的,我有一个包含这样的数字的文件:
L21479
Run Code Online (Sandbox Code Playgroud)
我想做的是使用 grep (或类似的工具)来查找文件中具有以下格式的所有字符串:
L#####
Run Code Online (Sandbox Code Playgroud)
# 将是数字。SO 一个 L 后跟 5 个数字。
这在 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 和 …
如何找到图案位于线条中间的线条。即在下面的例子中。我只想获取第 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)
谢谢
当我用它来查看目录中是否有特定文件时,通过管道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 到管道应该可以工作。
如果我有一个特定的字符串,我如何使用例如git log从命令行查找提交者的电子邮件?
我不想看到提交。我只希望“one-liner”命令只给我作者的电子邮件。
注意:我没有提交 ID。我只有一个搜索字符串。我的意思是我知道肯定是提交的一部分的字符串。
@axiac 发表评论后更新:
我有一个字符串 X,它在仅由 1 个提交者引入的意义上是“唯一”的。提交者将其添加到 file 中foo.java。
我只想拥有字符串X并foo.java找到添加该字符串的提交者的电子邮件
我正在尝试查找特定电子邮件 ID 重复的次数。uniq -c使用我得到的输出进行管道传输420 aol.com,但我需要aol.com 420如何执行此操作,因为uniq -c作为前缀计数应用
如果文件在变量中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) 我已经尝试过这个建议:
ip -o -f inet addr show | awk '/scope global/ {print $4}'
但输出带有子网掩码的 IP 地址:
192.168.1.108/24
我只想要号码 24
考虑以下几点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 '^(.*?):'
但是这两个命令都不起作用,这是为什么呢?