如何使用sed用文本替换空行?我尝试了一些早些时候发布的技巧,但它不起作用。有人能帮我吗?
示例文件内容-
Linux is an os.
Linux is opensource
Linux has various flavors like fedora,centos etc.
我想用像hello这样的文字来代替这些空白行。
我想删除包含关键字的行之后的换行符,例如private:、public:或protected:,以满足我们的编码标准。我需要一个命令行工具(Linux)为此,所以请没有Notepad++,Emacs,VS或Vim解决方案,如果他们需要用户交互。换句话说,我想做一个:
sed -i 's/private:\s*\n\s*\n/private:\n/g'
我见过这个,但无法将其扩展到我的需要。
这是我的样本文件
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中,我需要删除带有sed的C程序中的注释行,假设每个注释行都包含开始和结束标记,前后没有任何其他语句。
例如,下面的代码:
/* a comment line in a C program */
printf("It is /* NOT a comment line */\n");
x = 5; /* This is an assignment, not a comment line */
[TAB][SPACE] /* another empty comment line here */
/* another weird line, but not a comme
sed中的begin和end关键字实际上是如何工作的?我们必须在数据文件中特别提到这些关键字吗?
例如,如果我使用以下代码使用sed删除空行:
sed -n '/begin/,/end/ {
s/^$/ d
p
}
'
现在,数据文件中应该包含begin和end关键字吗?很抱歉,我尝试使用这两个关键字,但实际上没有在数据中输入它们,它没有给出预期的o/p。
我的档案是
0::question#1::
Love
giberrish fdfd
1::anything#2:
Is
repeat
22::anything#3::
Lie
我想要提取
Love
giberish
****
Is
repeat
****
Lie
cat file.txt | sed 's/::\n([^\n]*)/\1/g'
我得到的文件是
0::question#1::
Love
1::anything#2:
Is
22::anything#3::
Lie
关于测试正则表达式匹配在这里,https://regex101.com/
UPDATE我没有
在linux中使用这里的脚本在远程服务器上运行命令时,所有的行都会打印出来。怎样才能压制评论呢?
以下代码的输出应该是:
ls
... (whatever is in this folder)
echo -e this is a test\ndone
this is a testndone
exit
这个是可能的吗?这样做的原因是命令和注释更加复杂,使输出难以阅读。那应该更漂亮些。
#!/bin/bash
ssh -tt hogan@123.123.123.123 <<EOF
# this line get printed
ls
# and this comme
我在搜索文件的特定部分并将其存储到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
我试图编写一个相当简洁的sed脚本,仅在文件的前两行为空时才删除它们,因此下面的文件如下:
> cat myfile.in
Line 3
Line 5
将产生一个三行输出文件:
> cat myfile.out
Line 3
Line 5
这涉及到合并行范围和模式匹配,我只是找不到任何这样的例子。如果有人能建议并同样(或更多)考虑Perl替代方案,我也会感到兴奋。非常感谢。
脚注
我应该补充一点,我尝试了1,2{/^$/d},它在Linux上工作得非常好,但是在AIX中我得到了:
sed: 0602-404 Function 1,2{/^$/d} cannot be par
我有一个包含名称列表的文件(称为文件1):
Apple
Bat
Cat
我有另一个文件(参见文件2),其中包含名称和详细信息的列表,请参阅:
Apple bla blaa
aaaaaaaaaggggggggggttttttsssssssvvvvvvv
ssssssssiiuuuuuuuuuueeeeeeeeeeennnnnnnn
sdasasssssssssssssssssssssswwwwwwwwwwww
Aeroplane dsafgeq dasfqw dafsad
vvvvvvvvvvvvvvvvuuuuuuuuuuuuuuuuuuuuuus
fcsadsssssssssssssss
我一直试图找出如何删除重复的行,仅使用Sed,我有困难,找出如何做它。
到目前为止,我已经试过了,但效果不佳。
sed '$!N; /^\(.*\)\n\1$/!P; D'
文件:
APPLE
ORANGES
BANANA
BANANA
COOKIES
FRUITS
我得到的是:
APPLE
ORANGES
BANANA
BANANA
COOKIES
FRUITS
我想要的:
APPLE
ORANGES
BANANA
COOKIES
FRUITS
我一直在努力弄清楚如何做到这一点,这样我就不必手动遍历文件中的每一行,并告诉它手动删除重复的内容。
我的
这是标准的ls -l输出。
user@linux:~$ ls -l
total 0
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file01
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file02
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file03
user@linux:~$
可以增加这样的新行吗?
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file01
-rw-rw-r-- 1 user user 0 Nov 1 00:00 file02
我有一个文件,它有多行。
例如:
a
ab#
ad.
a12fs
b
c
...
我想使用sed或awk删除该行,如果该行包含符号或数字。(例如,我想删除: ab#,ad.,a12fs...行),或者换句话说,我只想保留包含a-z的行。
我知道怎么删除号码行,
sed '/[0-9]/d' file.txt
但我不知道如何删除符号线。
或者有什么简单的方法可以做到这一点?
我有一个文本文件,然后我想对齐它。我使用了column -t myfile > newfile.,但是这个命令删除了分隔两个句子的空行。我现在该怎么办?请帮帮我。
Myfile: a c Used column -t : a c Desired file: a c
bd e bd e bd e
. .
我有一个文件,比如abc.txt,有以下数据(实际数据有很多记录,比如大约200个)
Sno | Name
1 | Jack
2 | Jill
3 | June
现在我如何附加文本使我的文件看起来像这样,
Sno | Name | Place
1 | Jack | Paris
2 | Jill | Paris
3 | June | Paris
我试着在全球范围内进行替换,但是第一行应该添加不同的text.So,请帮助我解决问题。
下面是我的nanorc文件的示例:
(...)
## Detect word boundaries differently by treating punctuation
## characters as parts of words.
# set wordbounds
## The characters (besides alphanumeric ones) that should be considered
## as parts of words. This option does not have a default value. When
## set, it override