我试图为这个问题找出解决方案。我想使用awk该解决方案。
我的输入文件如下所示。
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
我使用awk命令来提取第二个值_,如下所示。
awk -F "_" '{print $2}' file
但是,尽管上面的命令显示了正确的值,但是我的输出中却出现了空行。我有两个问题。
问题1
如何删除输出中的空白行,以便仅获得venkat和输出中的空白行venkat3?
如果我使用printf的,而不是print我的awk,我得到venkatvenkat3的这不是我想要达到的输出。我想要这样的输出,
venkat
venkat3
问题2
使用这些值作为关联数组或其他东西,如何确定这些值是否实际出现在$1列中?
我想实现这样的目标,
awk -F "_" '$2==1{print $1}' file
编辑
我没有注意到awkStephane 的解决方案。它在做我刚才提到的事情吗?
对于非awk,请参阅:如何从shell中的文件中删除空白行?
—
kenorb 2015年
awk)没有做同样的事情。您的方法假设一个单词只有用分隔,才能包含在另一个单词中_。尽管对于OP的示例而言确实如此,但所有发布的答案也都处理,doglion而不仅限于dog_lion。