如何使用sed在模式之前和行号之后插入一行到文件中?如何在shell脚本中使用相同的脚本?
这会在具有模式的每一行之前插入一行:
sed '/Sysadmin/i \ Linux Scripting' filename.txt
这将使用行号范围来改变这一点:
sed '1,$ s/A/a/'
那么,现在如何使用这两者(我不能)使用sed在模式之前和行号之后或其他方法中插入一行到文件中呢?
我有一个文件(sample1.txt),格式如下:
1 a
2 b\
3 d
4 e\
5 k
6 hello\hi
7 stackoverflow\site\
现在,如果一行的最后一个字符是'\‘,那么我想用'’替换它,这样我就可以将sample1.txt转换成以下文件:
1 a
2 b
3 d
4 e
5 k
6 hello\hi
7 stackoverflow\site
我知道使用编程语言也可以这样做,但是否可以使用linux命令(如grep、sed等)进行同样的操作?
我想显示匹配正则表达式的所有行
如果我有一个文件
foo
bar123
baz12435
lorem
ipsum
dolor
sit
amet
这个display-from baz[0-9]* < file应该返回(它是否显示匹配的行并不重要)
lorem
ipsum
dolor
sit
amet
如何在Linux中完成此操作(使用sed、awk或grep)
我在写剧本
脚本的一个目标是在与foo匹配之后,递归地在多个文件中添加一个新的.yml代码线。
# Append new line after match in multiple files with sed
## sed -i -se "s/\foo/bar/g" *.yml
grep -rl foo * .| xargs sed -i -e "s/\foo/a bar/g" *.yml
在每次与foo匹配之后,I都期望,因为有了/a,在所有.yml文件中的新行上都会添加bar。
我得到了意外的 Sed输出:sed: can't read *.yml:
我对Linux命令很陌生。
我在tst.out文件中有以下内容。我想删除开始到第三个'|'的所有行字符串
MIN AU 09/15/22 C39.5 Equit|0|75|MIN 9 C39.50|AU|BBG018NNGHR1|
TIN AU 09/15/22 C39.9 ITY|0|75|RIN 9 D39.50|AU|BBG018NNGHR45|
CIN AU 09/15/22 C39.8 Ref|0|75|PIN 9 F39.50|AU|BBG018NNGHR66|
删除行字符串直到第三个'|'之后,文件内容应该如下所示:
MIN 9 C39.50|AU
示例
档案1:
This Dog
This Cat
This Duck
This Horse
档案2:
...
Animal Name
...
AniMal Type
...
AnIMal Class
...
animal Brand
...
我想做以下几点:
添加文件1的第一行(这只狗)刚好低于第一次出现的“动物”(忽略情况)
添加文件1第2行(此猫)刚好低于第二次出现的“动物”(忽略情况)
添加文件1第3行(这只鸭子)正好低于第三次出现的“动物”(忽略情况)
添加文件1第4行(这匹马)刚好低于第4次出现的“动物”(忽略情况)
..。
因此,一般来说,文件1的第n行应该添加在第n次出现
这在任何Linux上都能很好地工作:
$ echo foo bar | sed -n '/foo/{/bar/{;p;}}'
foo bar
但在OSX古老的BSD变体上却失败了:
❯ echo foo bar | sed -n '/foo/{/bar/{;p;}}'
sed: 1: "/foo/{/bar/{;p;}}": extra characters at the end of } command
我是不是错过了什么魔法咒语?有办法用便携的方式写吗?
我不想恢复到grep | grep | grep命令的管道。
更新:低代表在这里,
这是我的样本文件
user@linux:~$ cat file.txt
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$
我可以用grep -A2 'e 2' file.txt打印第2-4行。
user@linux:~$ grep -A2 'e 2' file.txt
Line 2
Line 3
Line 4
user@linux:~$
我也可以用grep -n打印出行号。
user@linux:~$ grep -nA2 'e 2' file.txt
2:Line 2
3-Line 3
4
例如,如果我的Linux系统上的文件中有以下文本:
10-02-2020
given as file name) for lines containing a match to the given PATTERN. By default, grep prints the matching lines.
In addition, two variant programs egrep and fgrep are available. egrep is the same as grep -E. fgrep is the same as grep -F
16-02-2020
The top progr
我在搜索文件的特定部分并将其存储到bash shell的变量中时遇到了问题。
这是我的一个文件示例:
From root@machine2.com Mon Jan 7 16:56:50 2013
Return-Path: <root@machine2.com>
X-Original-To: smsto+9121403571@machine2.com
Delivered-To: smsto+9121403571@machine2.com
Received: by machine2.com (Postfix, from userid 0)
id 43C191A1EC
我有一个文件beginning.txt,其中包含的行如下:
Disclaimer Here
This is a Notice
I have something liere
如何执行linux命令,将beginning.txt中的所有行添加到与扩展名" .customfile“匹配的每个文件的顶部(注意,.customfile只是一个文本文件,但这些文件可能位于我当前文件夹中的子目录中,我也希望更新这些文件)。
我有许多带有.customfile后缀的文件,我想要追加这些文件,所以我想找一种通过编程实现这个功能的方法。我看到了sed命令的示例,它仅限于一行。
sed -i '1s
如何使用sed用文本替换空行?我尝试了一些早些时候发布的技巧,但它不起作用。有人能帮我吗?
示例文件内容-
Linux is an os.
Linux is opensource
Linux has various flavors like fedora,centos etc.
我想用像hello这样的文字来代替这些空白行。