当前位置:首页 » 文件管理 » sed指令可以输出文件指定的列

sed指令可以输出文件指定的列

发布时间: 2022-03-06 21:54:55

1. 如何把sed的输出,作为其他命令的输入

可以使用"|"(管道)符号
sed -n '1p' | awk "{print $0}"
意思就是将一个文件的第一行打印的输出结果作为awk的输入

2. linux 定向输出内容到文件指定行

重定向只有追加或者覆盖。。。

3. 利用shell脚本如何提取一个文件中某一特定行和下面若干行的内容

1、在linux目录/root下建立一个txt文件,内容如下,使用|竖线分割,作为我们的实验数据样本。

4. sed命令想在第3列和第4列之间差入2列

sed-i's/3,/&7,8,/'file.unl

&就表示引用前面正则匹配到的内容,这里就代表 "3,"

用awk的话无法直接修改文件,只能存为临时文件,然后再通过mv命令覆盖原文件。

5. linux命令怎么显示文件某一行或几行内容

sed-n4,8pfile#打印file中的4-8行
sed-n4pfile#打印file中的第4行

6. sed或者cat命令怎样打印指定行比如第2 4 5 行

sed-n'2p;4,5p'InputFile

n,m 表示 n 到m行,这里用 4p;5p 也行。

InputFile 是输入文件


只用 cat 不能实现,倒是用 cut可以方便实现

cut-d$'
'-f2,4-5hello.c

注意连续行用的是 4-5。

7. linux指令 sed指令怎么选择列

首先我这边先建一个字母大小转换的脚本test2.sh,内容如下:

先介绍些sed -n的应用:
sed命令中p能实现打印匹配行的功能。我们可以实际看下sed命令带-n和不带-n情况下有什么不同。
sed -n "1p" test2.sh:带-n选项的话,只打印test2.sh脚本第一行匹配行。
sed "1p" test2.sh:不带-n的话,不仅打印第一行匹配行,还打印输出test2.sh脚本的全部内容。

sed -n还可以打印文件的范围,比如打印test2.sh脚本的前两行,我们就可以执行以下命令:sed -n "1,2p" test2.sh,就可以直接打印前两行。
sed命令可以打印匹配模式行,比如打印test2.sh脚本匹配tr的行,就可以执行以下命令:
sed -n /tr/p test2.sh。
remark:如果不带-n的话,除了打印匹配行外,还会打印脚本的全部内容。

sed -e的应用。只有当sed命令传递多个编辑命令式,才会使用到-e。比如:我想打印/tr/匹配行,并且打印匹配行所在的行号,此时存在多个sed参数,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每个参数前都要带上-e:

sed a\追加命令,命令格式为:sed ’指定地址a\追加内容‘ 目标文件
这个追加内容在匹配行的下一行,只会输出到标准输出,原文件内容是不变的,例如在test2.sh脚本的/tr/所在的匹配行的下一行添加“#hello”内容,可需要执行:
sed '/tr/a\#hello' test2.sh
一定不要忘记单引号.
还有一个sed i\的追加命令,命令格式为:sed ’指定地址i\追加内容‘ 目标文件,跟a\不同,i\追加是在指定位置的上一行追加命令

sed命令中还有一些特殊的匹配,比如元字符匹配,此时需要用转义符"\"屏蔽其特殊意义。
比如:sed -n ‘/\=/p’test2.sh,则打印输出tr一行。
$在正则表达式中表示尾行,执行sed -n ‘$p’ test2.sh则打印脚本尾行。
!表示取反,可以看以下两个例子

sed中可以使用关键字来匹配行,打印我们所需要的内容,比如,我希望打印test2.sh第2,3行,可以执行:sed -n "2,3P" test2.sh,也可以执行sed -n "/tr/,/exit/p" test2.sh

sed c\的应用,命令格式为:sed ’指定地址c\替换内容‘ 目标文件。比如,#hello,替换test2.sh脚本的tr这行,可以执行命令:sed '/tr/c\#hello' test2.sh

sed删除d应用:比如我想删除test2.sh的第2行,可以执行以下命令:sed "2d" test2.sh或者sed /tr/d test2.sh

sed替换s应用:格式 sed s/被替换的字符/替换字符/[替换选项]
比如,我想把test2.sh中tr替换成大写的tr,则可以执行以下命令:sed ‘s/tr/TR/’test2.sh,则把脚本中的tr替换成TR,完后输出全部内容。
如果仅想打印替换所在行,则需要试用使用-n和-p:sed -n ‘s/tr/TR/p’ test2.sh:把脚本中的tr替换成TR,然后打印tr所在的行.
如果脚本中存在好几个tr,并且每一行也存在多个tr,如果执行以上命令的话,只会更改每一行的第一个出现的tr,如果要全部把tr转后为TR,则需要添加G参数:
sed -n ’S/tr/TR/pg’test2.sh。
w参数是定向输入参数,比如要把上述的变更定向输出到test1.txt中,则需要执行:
sed -n ’s/tr/TR/pgw test1.txt’ test2.sh。
也可以直接把选定的匹配内容写到另一个文本中,比如想把test2.sh中tr这一样写到test2.txt中,执行:sed -n ’/tr/w test2.txt‘ test2.sh

8. 如何用shell提取文件中指定的字符串

shell读取文件的指定行字符串
在得到数行输出时,需要得到指定行的字段,可以使用该指令。
sed -n Np 文件名
如sed -n 2p xxx 输出结果即为第二行的内容
在shell脚本中有时需要按行读出文件的内容,比如文件中每一行的命令等。
假设存在文件filename,需要从中按行读取内容,并在每行的开头增加字符串command,命令如下
cat filename | while read line; do echo "command $line"; done!

9. 如何实现sed命令结果只输出指定次数的匹配

鄙人愚钝,只有这种办法啦:

sed-nr'/*{5}/{h;:a;n;H;/*{5}/!ba;g;p;q}'file.txt


说实话,没太明白你给出的sed命令中,// 这个地址匹配是怎么工作的。

10. shell中,sed可以写入前面的数据流吗例如,cat一个文件,可不可以用sed把cat的内容写入到指定文件

用sed的a命令(append,附加到文件的指定行后)或 i命令(insert,插入到指定行前)

str=`cat file1 | sed -n '3p'`
line=3 # file2的指定行
sed -i "${line} a$str" file2