使用 sed 命令交换字符串中的第 2 个和第 6 个字符
Swap 2nd and 6th char in a string using sed command
我写了一个 sed 命令来交换下面数字中的第二个和第六个字符。
我收到以下错误:
sed: file minor1.sed line 4: invalid reference on `s' command's RHS
我的 sed 命令(script.sed):
s/\(.\){10}//g
我正在使用 sed -r -f script.sed Input.txt 到 运行 命令。
Input.txt -
8668797647
8884747424
3716706006
8662665588
谁能帮我弄清楚为什么会出现此错误?
试试这个:
sed -E 's/^\(.\)\(.\)\(...\)\(.\)//'
这会捕获编号如下的组中的数字:
Input: abcdefghij
Group: 123334 (the capture group of the digit above)
Result: afcdebghij
只有前6位是matched/replaced。
不确定为什么您只在 </code> 处收到该错误,但如果您将其另存为 .sed 并 运行 它,这里有一个表达式确实可以满足您的要求正如你所建议的:</p>
<pre><code>s/(.)(.)(.{3})(.)//
最后没有 g
,因为无论如何您只想替换每行的第一个匹配项。
它匹配:一个字符,一个字符,三个字符和一个字符,然后将它们作为第一个匹配,第四个匹配(第六个字符),第三个匹配(中间的字符)和第二个字符写回。有效地交换第 2 和第 6 个。
我写了一个 sed 命令来交换下面数字中的第二个和第六个字符。
我收到以下错误:
sed: file minor1.sed line 4: invalid reference on `s' command's RHS
我的 sed 命令(script.sed):
s/\(.\){10}//g
我正在使用 sed -r -f script.sed Input.txt 到 运行 命令。
Input.txt -
8668797647
8884747424
3716706006
8662665588
谁能帮我弄清楚为什么会出现此错误?
试试这个:
sed -E 's/^\(.\)\(.\)\(...\)\(.\)//'
这会捕获编号如下的组中的数字:
Input: abcdefghij
Group: 123334 (the capture group of the digit above)
Result: afcdebghij
只有前6位是matched/replaced。
不确定为什么您只在 </code> 处收到该错误,但如果您将其另存为 .sed 并 运行 它,这里有一个表达式确实可以满足您的要求正如你所建议的:</p>
<pre><code>s/(.)(.)(.{3})(.)//
最后没有 g
,因为无论如何您只想替换每行的第一个匹配项。
它匹配:一个字符,一个字符,三个字符和一个字符,然后将它们作为第一个匹配,第四个匹配(第六个字符),第三个匹配(中间的字符)和第二个字符写回。有效地交换第 2 和第 6 个。