【问题标题】:"grep" with column value and attach new column bash / awk /grep?带有列值的“grep”并附加新列 bash / awk /grep?
【发布时间】:2018-11-13 13:20:20
【问题描述】:

我有独特的行动要做。我有这两个文件:

文件1:

something SOME.THING-AGAIN-WHATEVER.SUPPORT irrelevant_column3_text

文件2:

SOMETHING-NEW-SOME-THING-AGAIN-WHATEVER-SUPPORT

file1 中的第 2 列(某些东西....) 与 filere2 (SOMETHING...) 中的列非常相似,除了: - 它有点而不是破折号 - 它从开头和结尾错过了文本的某些部分。

我想得到的是这样的:

something SOME.THING-AGAIN-WHATEVER.SUPPORT irrelevant_column3_text SOMETHING-NEW-SOME-THING-AGAIN-WHATEVER-SUPPORT

所以四列文件,在正确的位置附加来自 file2 的输入...

我认为这可以使用 awk 来完成,但这绝对超出了我的技能...... 提前致谢。

【问题讨论】:

  • 抱歉,这不是 StackOverflow 的工作方式。 “我想做 X,请给我提示和/或示例代码”形式的问题被认为是题外话。请访问help center并阅读How to Ask,尤其是阅读Why is “Can someone help me?” not an actual question?
  • 好吧,你没有展示你尝试过的东西。这样做:对于 file1 中的每一行,获取第二列的值。然后从列中删除点并在 file2 中搜索这样的值。如果找到它,请将其附加到该行。或者,您可以从 file1 第二列创建一个 file3,甚至使用 join 来合并文件。
  • 阅读cutpaste。如果您是新手,可能需要几个步骤,但您可以完成。
  • Paul 如果这是复制和粘贴的问题,我不会把它放在这里......我不明白你为什么这么不愉快......@Kamil,我在想你有什么建议,但问题就在这里:“从列中删除点并搜索”...好吧,我可以轻松地使用 - 例如 - sed 和“echo -n”我可以在每个文件旁边都有来自这些文件的列其他,但我将如何“返回”到破折号而不是点?我想说的是,按照您所描述的方式,我将“破坏”file1 的列。我该如何克服呢?
  • @IrkaIrenka - 使用极其有限的数据集和一个样本,不可能提出一个可靠的解决方案;这需要对 file1 或 file2 的第 2 列中的值进行预处理。即使这不是 kvantour 指出的题外话,问题也将模糊处理。

标签: linux bash awk grep


【解决方案1】:

我能够通过简单的 grep 和 echo 实现我想要的 :)

for i in $(file1 ); do echo -n "$i " ; grep $(echo $i|awk '{print $1}' |sed s'/\./-/g') file2;done 

希望对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多