请帮助我使用 unix 命令来替换两个分隔符位置之间的任何内容。 例如:我有多个带有以下标题数据的文件,我想替换第 9 和第 10 位置处 * 分隔符之间的数据
ISA*00* *00* *ZZ*80881 *ZZ*TNC0022 *190115*1237*^*00501*000320089*0*P*|~
我的输出应该是这样的:
ISA*00* *00* *ZZ*80881 *ZZ*TNC0022 *190327*1237*^*00501*000320089*0*P*|~
最佳答案
试试这个:
perl -pe 's/^((?:[^*]*\*){9})([^*]+)(.*)/${1}190327$3/'
正则表达式搜索 9 次出现 {9}
的任何内容,但不是星号 [^*]
后跟星号 \*
并将所有内容存储在第一个捕获组中。第二次捕获至少有一个字符不是星号 [^*]+
。第三个捕获是该行的其余部分。
匹配的行将被第一部分 ${1}
、新值 190327
和第三部分 $3
替换。
关于linux - 用于替换两个分隔符位置之间的任何内容的 unix 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382373/