我有一个包含shell命令输出的变量,我试图'grep‘这个变量,但似乎所有的输出都在一行中,没有换行。所以当我'grep‘这个变量时,所有的东西都会被返回。
例如,我的变量包含以下内容:
standalone 123 abc greefree ten1 stndalone 334 abc fregree ten1 stndalone 334 abc fregree ten2 stndalone 334 abc fregree ten2 stndalone 334 abc fregree ten1 stndalone 334 abc fregree ten2 stndalone 334 abc fregree ten1 stndalone 334 abc fregree ten1 stndalone 334 abc fregree ten2 我想在有ten1或ten2的地方插入换行符。因此,当我'grep‘变量时,我只返回一个特定的行。
如下所示的输出
standalone 123 abc greefree ten1
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2有没有可以使用的bash命令或某种类型的regex表达式?
发布于 2019-11-22 23:35:29
你能不能试着跟着我走一遍。
sed 's/\r//g;s/ten[12]/&\n/g' Input_file要在最后一次尝试删除空格(将保留在上面的代码中):
sed -E 's/\r//g;s/ten[12]/&\n/g' Input_file | sed -E 's/^ +//'基于多个图案进行编辑
sed -e 's/\r//g;s/ten[12]/&\n/g' -e 's/\r//g;s/abc[12]/&\n/g' Input_file发布于 2019-11-22 23:36:32
下面是sed和tr的组合,它可能会让你更接近你想要的:
sed -e 's/ten1/^M/g' -e 's/ten2/^M/g' | tr \\r \\n假设你有一个名为LONG的变量,你可以使用上面的代码,如下所示:
echo "$LONG" | sed -e 's/ten1/^M/g' -e 's/ten2/^M/g' | tr \\r \\n上面,我们将所有的ten1和ten2字符串转换为CR (回车),然后使用tr将这些CR转换为换行符。将grep放在after语句中:
echo "$LONG" | sed -e 's/ten1/^M/g' -e 's/ten2/^M/g' | tr \\r \\n | grep whatever在重新阅读了您的问题和其他答案之后,我提供了这段代码,以包括原始的ten1或ten2:
echo "$LONG" | sed 's/ten[12] /&^M/g' | tr \\r \\n这是输出:
standalone 123 abc greefree ten1
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten1
stndalone 334 abc fregree ten2https://stackoverflow.com/questions/58997142
复制相似问题