我正在尝试使用grep命令在文件中搜索特定行,并且我成功地这样做了。现在我想将整行复制到原始行后面的新行。换句话说,原始行后面应该跟有相同内容的新行。
例如: 原始数据:
Apple
Samsung
Nokia
HTC
说我是否希望新数据看起来像
Apple
Samsung
Samsung
Nokia
HTC
我用sed尝试了grep和pipe,但我失败了。有人可以帮我这个吗?
由于
答案 0 :(得分:2)
使用sed
,您可以默认使用-n
关闭打印行,并使用p
显示行。使用此信息将显示解决方案
sed '/Samsung/p' yourfile
# Or, when you want to match the whole line
sed '/^Samsung$/p' yourfile
答案 1 :(得分:1)
要复制整个行匹配模式,然后将其粘贴到新行上,就在此之后:
sed -i $'s/.*Samsung.*/&\\\n&/' file
输出:
Apple
Samsung
Samsung
Nokia
HTC
要将结果输出到另一个文件。
sed $'s/.*Samsung.*/&\\\n&/' file > anotherfile
答案 2 :(得分:0)
对于包含内容
的文件input.txt
Apple
Samsung
Nokia
HTC
你可以进行内联替换,复制“三星”这样的行:
sed -i 's/\(Samsung\)/\1\n\1/' input.txt
括号捕捉到该单词,然后\1
将其放回两次,其间有换行符。
答案 3 :(得分:0)
使用此sed
:
sed $'s/Samsung/&\\\n&/' input.txt
输出:
Apple
Samsung
Samsung
Nokia
HTC
另见:
答案 4 :(得分:0)
这可能适合你(GNU sed):
sed '/pattern/H;//G' file
如果模式可以出现多次:
sed 'x;z;x;/pattern/H;//G' file
答案 5 :(得分:0)
为了完整性:
awk '/Samsung/ {print}; {print}' file
perl -pe 'print if /Samsung/' file