Questions tagged «sed»

sed是用于过滤和转换文本的命令行流编辑器。

3
删除文本文件的一部分并使用sed跟随以下行
我需要编辑如下文件: auto wlx00 allow-hotplug wlx00 iface wlx000 inet dhcp iface wlx000 inet6 auto post-up sysctl -w net.ipv6.conf.wlx000.accept_ra=2 auto wlx000 目标是删除以'iface ... inet6'开头的行,并删除以空格开头的下几行(可以是一个或多个): iface wlx000 inet6 auto post-up sysctl -w net.ipv6.conf.wlx000.accept_ra=2 并保持其余状态不变,以得到以下结果: auto wlx00 allow-hotplug wlx00 iface wlx000 inet dhcp auto wlx000 我尝试使用sed,如下所示: sed -i.old -r -e "/iface\s*\w*\s*inet6.*/,\${d;/^\s.*/d;}" /etc/configfile 但它会删除从正确位置开始到擦除为止的所有内容。我只想删除选择iface文本后以空格开头的线条。

4
按空格定界,但忽略反斜杠空格
5678 [] testing,\ group [] [testing [] ip\ 5.6.7.8 [] launch-wizard-1 0.0.0.0/0 456dlkjfa [] 1.2.3.4 [] test 1.2.3.4/32 4.3.2.0/23 4.3.2.0/23 default 4.3.2.0/23 4.3.2.0/23 launch-wizard-2 0.0.0.0/0 launch-wizard-3 0.0.0.0/0 2.3.4.5/32 [] 我想获取上面的第一列,但要注意的是,我需要将\ (反斜杠)作为该列的一部分,因此awk '{print $1}'应该给我 5678 testing,\ group [testing ip\ 5.6.7.8 launch-wizard-1 456dlkjfa 1.2.3.4 test default launch-wizard-2 launch-wizard-3 2.3.4.5/32

3
在给定的行号上执行sed操作
我想知道是否有一种简单的方法可以在具有预分配行号的某些行上进行操作。 假设我要输出文件的第1、7、14和16行,我可以简单地执行 sed -n '1p;7p;14p;16p' input_file 但这在操作不仅是打印时变得更加复杂,而且我不想编写相同的长命令4次(是的,我知道我可以通过替换相同的bash变量4次来构造此long sed命令,但是这还不够理想...),即 sed -n '1{long_command};7{long_command};14{long_command};16{long_command}' input_file 有没有办法对文件的这些特定行进行操作?我期待这样的事情, sed -n '1,7,14,16p' 这肯定无法在当前形式下运行。 任何帮助将不胜感激。“不,这不可能。” 解释也是我会接受的答案。
8 sed 

2
如何通过具有公共头合并两个文件的行?
我想基于两个文件中的公共数据合并它们作为标题。 以下是示例 文件1 >Feature scaffold1 1 100 g 101 200 g 201 300 g >Feature scaffold2 1 100 g 01 500 g >Feature scaffold3 10 500 g >Feature scaffold4 10 300 g 文件2 >Feature scaffold1 500 500 r 900 1000 r >Feature scaffold2 200 300 r >Feature scaffold3 100 200 …

3
为什么我不能以这种方式grep?
我想将“ disable = yes”行更改为“ disable = no”到以下文件中: [root@centos2 ~]# cat /etc/xinetd.d/tftp service tftp { ... server_args = -s /var/lib/tftpboot disable = yes per_source = 11 ... } 我尝试了这个: [root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp [root@centos2 ~]# 只需用鼠标复制空间,但不会复制任何内容... 为什么以及如何知道“ disable”和“ =”之间的元素是什么?是几个空格吗?表格? 我知道我可以使用以下正则表达式进行grep: [root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp disable …
8 sed  grep 

2
使用N时会被sed输出混淆。有人可以解释这些结果吗?
我正在学习sed。直到我遇到N(接下来的多行),一切似乎都很好。我出于练习/理解/上下文的目的创建了此文件(guide.txt)。这是该文件的内容... This guide is meant to walk you through a day as a Network Administrator. By the end, hopefully you will be better equipped to perform your duties as a Network Administrator and maybe even enjoy being a Network Administrator that much more. Network Administrator Network Administrator I'm a Network …
8 sed 

1
如果只包含特定数字,则使用sed删除整行
我有一个txt文件 123 456 789 456 123456 我想从文件中删除特定字符,即(123)。我尝试过 $ sed -i '/123/d' dummy.sh $ vi dumm.txt 456 789 456 在下面的命令中,当我运行时,两个单词(123和123456)都将被删除,但是我只需123要从文件中删除 $ sed -i 's/123//g' dummy.sh $ vi dumm.txt 456 789 456 456 当我运行以下命令时,123它将被替换为null。 任何人都可以说如果只包含特定数字则删除整个行吗?

2
如何使用sed或awk将字符串添加到.txt文件中的所有行中,除了少数字符外
我有一个名为的文本文件xid.txt: xid: SC48028 id: artf398444 xid: indv1000 id: indv24519 xid: SC32173 id: artf398402 xid: SC21033 id: artf398372 xid: 1001 id: tracker4868 xid: wiki1000 id: wiki10709 xid: proj1234 id: proj12556 我需要在'SC48028','SC32173'...之前添加字符串'PT_'。字符串“ SC ...”可以任何组合开头,可以是“ AC ...”或“ DL ..” 要求的输出: xid: PT_SC48028 id: artf398444 xid: indv1000 id: indv24519 xid: PT_SC32173 id: artf398402 xid: …

3
编辑包含'\ x00'字节的二进制流
仅使用shell工具,如何编辑包含NULL(0x00字符)的二进制流,并将0x00字符保留在输出流中? 编辑需要将指定位置的一个字符替换为另一个字符(在下面的示例中,用字符'|'代替),例如: dd ibs=1 skip=$offset count=$reglen status=none if=$ARQ | sed 's/./\|/2' | sed 's/./\|/5' #| more replacements.... 但是sed会在替换前删除所有'\ 0x00'字符。 编辑-使用@George Vasiliou测试演示我环境中的sed行为: $ echo -e "lineA\nlineB\nlineC" | tr '\n' '\0' | od -t x1 0000000 6c 69 6e 65 41 00 6c 69 6e 65 42 00 6c 69 6e 65 …
8 sed  binary 

6
将一列中的所有值替换为1
我有多个包含12行和3列的文本文件。 例: 2 6 0.74 42 6 0.58 80 6 0 112 6 0.24 132 6 1 216 6 0.7 342 6 0 390 6 0.21 432 6 0.56 466 6 0.75 524 6 0.6 646 6 0.9 我想在所有行中将第三列的所有值设置为1。 输出应如下所示: 2 6 1 42 6 1 80 6 1 112 …

2
使用空格删除多个文件中的某些字符
我正在尝试重命名目录中的一堆音乐曲目,但出现此错误: 移动多个文件时,最后一个参数必须是目录 这是脚本: for file in * ; do mv $file $(echo $file |sed 's/^.\{5\}//g') done 这适用于没有空格的文件,我将如何修改此脚本?
8 linux  bash  scripting  sed 



3
更改字符串中第n个字母的大小写
我想换一个字符串的第n个字母的大小写BASH(或任何其他的* nix工具,例如sed,awk,tr等)。 我知道您可以使用以下命令将整个字符串更改为大小写: ${str,,} # to lowercase ${str^^} # to uppercase 是否可以将“测试”的第三个字母的大小写更改为大写? $ export str="Test" $ echo ${str^^:3} TeSt

2
用部分可选的内容来抓取一段文本
我在一个非常大的日志文件(例如A.log)中描述了一个事件的多个条目。我想对日志文件中的事件条目做两件事: 计算每个此类条目的出现次数(这不是强制性要求,但是很高兴拥有)。 将实际条目提取到一个单独的文件中,并在以后进行研究。 典型的事件条目如下所示,并且它们之间还会有其他文本。因此,在下面的示例中,有两个事件条目,第一个包含两个DataChangeEntry 有效负载,第二个包含一个DataChangeEntry 有效负载。 Data control raising event :DataControl@263c015d[[ #### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator] Filter/Collection Id : 0 Collection Level : 0 Sequence Id : 616 ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49 ==== DataChangeEntry (#1) ChangeType : UPDATE KeyPath : [2014-06-26 06:15:00.0, 0] AttributeNames : [DATAOBJECT_CREATED, COUNTX, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.