gpt4 book ai didi

regex - sed 替换文件组字符串

转载 作者:IT王子 更新时间:2023-10-29 01:25:42 26 4
gpt4 key购买 nike

我正在尝试替换多行中的字符串。已经很晚了,我变得焦躁不安,也许有人更愿意试一试以获得一些 SO 点。我要替换的字符串是来自以下 SQL 的“STORED AS TEXTFILE”...

PARTITIONED BY(load string, date string, source_file string)
STORED AS TEXTFILE
LOCATION '${staging_directory}/${tablename}';

让它看起来像...

PARTITIONED BY(load string, date string, source_file string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '${staging_directory}/${tablename}';

所以我的表情是

:%s/)\nSTORED AS TEXTFILE\nLOCATION '/)\rROW FORMAT DELIMITED \rFIELDS TERMINATED BY ',' \rSTORED AS TEXTFILE \rLOCATION '/g

它在文件内部工作(使用 vim),但我无法通过一个命令在目录中的所有文件上工作。到目前为止我已经尝试过...

sed -i "s/)\nSTORED AS TEXTFILE\nLOCATION '/)\rROW FORMAT DELIMITED \rFIELDS TERMINATED BY ',' \rSTORED AS TEXTFILE \rLOCATION '/g"

...我也尝试了上面的语句,所有的空格都被转义了。请帮忙!

最佳答案

gawk 就地编辑方法 - 自 GNU awk 4.1.0 起可用:

gawk -i inplace '$0~/STORED AS TEXTFILE/{ $0="ROW FORMAT DELIMITED" ORS "FIELDS TERMINATED BY \047,\047" ORS $0 }1' file*
  • -i inplace - 就地编辑每个输入文件

关于regex - sed 替换文件组字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44514326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com