grep 文件读取 key:value
grep a file to read a key:value
我有一个文件 file.txt
,其中有多个 key:value
对。从文件中读取特定的 value
时,打印了多行。请帮助我纠正下面的逻辑。
INPUT_FILE
cat file.txt
NAMES:1234-A0;5678-B0;3456-C0
1234-A0:1234_12345678_987
DESIRED_OUTPUT
1234_12345678_987
MY_CODE
cat file.txt | grep -w 1234-A0 | cut -f2 -d ':'
输出
1234-A0;5678-B0;3456-C0
1234_12345678_987
请告诉我上面的命令有什么问题 (?) 以及获取 desired output
的正确命令应该是什么。谢谢!
awk
是执行此操作的正确工具,因为您的数据由通用字符分隔并按列和行构建。你可以使用这个 awk 命令:
awk -F: ' == "1234-A0"{print }' file
1234_12345678_987
首先,
Please let me know what's wrong in the above command
当你写 cat file.txt | grep -w 1234-A0
应该是 grep -w 1234-A0 file.txt
(我的意思是从 cat
传送到一个可以直接读取文件的命令是没有用的,
再加上你正在吃掉一些宝贵的资源,同时让你的脚本成为次优的)
话虽这么说,您要求的是带有单词“1234-A0”的行……而这正是您的输出!
现在尝试以下操作并记下不同之处:
grep ':1234-A0' file.txt
(你应该有第一行)
grep '1234-A0:' file.txt
(你应该有第二个)
grep '^1234-A0' file.txt
(第二行也是)
添加更多行,在文件的其他地方随机添加“1234-A0”,然后重新运行上面的示例
查看差异。
最后,
what should be the correct command
一旦你给出了正确的模式,你现在就可以像你一样进行切割:
grep '^1234-A0:' file.txt | cut -f2 -d:
例如。
AWK语言是另一种方式,更简洁,但不是现在这样
仍在学习 BRE(也在 sed
和 vi
中找到,而 awk
使用 ERE)
我有一个文件 file.txt
,其中有多个 key:value
对。从文件中读取特定的 value
时,打印了多行。请帮助我纠正下面的逻辑。
INPUT_FILE
cat file.txt
NAMES:1234-A0;5678-B0;3456-C0
1234-A0:1234_12345678_987
DESIRED_OUTPUT
1234_12345678_987
MY_CODE
cat file.txt | grep -w 1234-A0 | cut -f2 -d ':'
输出
1234-A0;5678-B0;3456-C0
1234_12345678_987
请告诉我上面的命令有什么问题 (?) 以及获取 desired output
的正确命令应该是什么。谢谢!
awk
是执行此操作的正确工具,因为您的数据由通用字符分隔并按列和行构建。你可以使用这个 awk 命令:
awk -F: ' == "1234-A0"{print }' file
1234_12345678_987
首先,
Please let me know what's wrong in the above command
当你写 cat file.txt | grep -w 1234-A0
应该是 grep -w 1234-A0 file.txt
(我的意思是从 cat
传送到一个可以直接读取文件的命令是没有用的,
再加上你正在吃掉一些宝贵的资源,同时让你的脚本成为次优的)
话虽这么说,您要求的是带有单词“1234-A0”的行……而这正是您的输出!
现在尝试以下操作并记下不同之处:
grep ':1234-A0' file.txt
(你应该有第一行)grep '1234-A0:' file.txt
(你应该有第二个)grep '^1234-A0' file.txt
(第二行也是)
添加更多行,在文件的其他地方随机添加“1234-A0”,然后重新运行上面的示例 查看差异。
最后,
what should be the correct command
一旦你给出了正确的模式,你现在就可以像你一样进行切割:
grep '^1234-A0:' file.txt | cut -f2 -d:
例如。
AWK语言是另一种方式,更简洁,但不是现在这样
仍在学习 BRE(也在 sed
和 vi
中找到,而 awk
使用 ERE)