导航

sed 学习 3

$cat test
(1) (4)
(2) (5)
(3) (6)
$cat test | awk '{print $2}' | sed "s/\(.*\)/\1/g"
(4)
(5)
(6)
#没有办法去掉括弧

 

 

 

 

-----------------

我查了两本书,都没有sed -i选项,很坑啊

------------------

sed -i命令详解 - Ev_zhk - 博客园 (cnblogs.com)

sed -i命令详解及入门攻略_夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远.-CSDN博客

一个错误尝试,不知道为什么

echo 'begin
apple 1 2 3
orange 4 5 6' > ttt1

   echo 'banana 1 2 3
  pinapple 1 2 3' > op

sed -i '/apple/d
/orange/d 
$r op' ttt1
cat ttt1
输出:
begin

去掉$可以,也就是$定位出错

echo 'begin
apple 1 2 3
orange 4 5 6' > ttt1
   echo 'banana 1 2 3
  pinapple 1 2 3' > op

 sed -i '/apple/d
/orange/d 
r op' ttt1

 cat ttt1

输出:
begin
banana 1 2 3
pinapple 1 2 3
 

 

分开可以


echo 'begin
apple 1 2 3
orange 4 5 6' > ttt1

   echo 'banana 1 2 3
  pinapple 1 2 3' > op

sed -i '/apple/d
/orange/d' ttt1
sed -i '$r op' ttt1

cat ttt1

输出:

begin

banana 1 2 3
pinapple 1 2 3



但是ttt1前必须有东西,下面这样也不行

echo 'apple 1 2 3
orange 4 5 6' > ttt1



  echo '  banana 1 2 3
  pinapple 1 2 3' > op

sed -i '/apple/d
/orange/d' ttt1
sed -i 'r op' ttt1

cat ttt1
输出无

 

 

-----------------------------

噢,我又来了

之前的实现适用于当个文件的修改

合起来是

sed '/config_name/d
$r /config_file'  data.txt_always > data.txt

但目前我需要在原文件直接作修改,因为批量重定向时无法修改名字

-------------------------------------------------------

场景:配置文件一项配置一行,现在通过脚本,使得指定配置项的内容做修改

我觉得应该是清除当前的指定配置项,使用模式匹配

sed '/config_name/d' data.txt

在最后一行的下一行写入包含配置项的文件

sed '$r configAdd' data.txt

posted on 2021-05-13 15:29  toughcactus  阅读(40)  评论(0编辑  收藏  举报