Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 交换每行的第一个和最后一个字符的sed命令_Regex_Bash_Unix_Sed_Text Processing - Fatal编程技术网

Regex 交换每行的第一个和最后一个字符的sed命令

Regex 交换每行的第一个和最后一个字符的sed命令,regex,bash,unix,sed,text-processing,Regex,Bash,Unix,Sed,Text Processing,我想写一行sed命令来交换文件每行的第一个和最后一个字符。下面显示的命令不起作用 sed 's/\(.\)\(.+\)\(.\)/\3\2\1/' input.txt 我甚至尝试添加行首和行尾字符 sed 's/^\(.\)\(.+\)\(.\)$/\3\2\1/' input.txt 它似乎与文件中的任何内容都不匹配 你需要逃离+ 你需要逃离+ 如果你想试试其他的,这里有一个GNUAWK版本 这会将a设置为第一个字符,然后将first设置为last,last设置为a 它需要gnu aw

我想写一行sed命令来交换文件每行的第一个和最后一个字符。下面显示的命令不起作用

 sed 's/\(.\)\(.+\)\(.\)/\3\2\1/' input.txt
我甚至尝试添加行首和行尾字符

 sed 's/^\(.\)\(.+\)\(.\)$/\3\2\1/' input.txt
它似乎与文件中的任何内容都不匹配

你需要逃离+

你需要逃离+


如果你想试试其他的,这里有一个GNUAWK版本

这会将a设置为第一个字符,然后将first设置为last,last设置为a
它需要gnu awk,因为设置FS为nothing不在标准awk中

如果您想尝试其他设置,这里有一个gnu awk版本

这会将a设置为第一个字符,然后将first设置为last,last设置为a 它需要gnu awk,因为将FS设置为nothing不在标准awk中

abcd | sed 's/^\(.\)\(.*\)\(.\)$/\3\2\1/'
您可以使用。*。印刷品

也适用于广告,如

echo ad | sed 's/^\(.\)\(.*\)\(.\)$/\3\2\1/'
印刷品

da
ad #not swaps
并非每个sed都知道“.+”,例如,它在OS X上不起作用。因此,我建议使用。*或使用..*模拟“.+”,如

印刷品

da
ad #not swaps
这在以下情况下起作用:

abcd | sed 's/^\(.\)\(.*\)\(.\)$/\3\2\1/'
您可以使用。*。印刷品

也适用于广告,如

echo ad | sed 's/^\(.\)\(.*\)\(.\)$/\3\2\1/'
印刷品

da
ad #not swaps
并非每个sed都知道“.+”,例如,它在OS X上不起作用。因此,我建议使用。*或使用..*模拟“.+”,如

印刷品

da
ad #not swaps
不需要“^”或“$”,因为sed在默认情况下取尽可能大的值,所以整个行 使用*而不是+是因为使用+至少需要一个3字符的行,而2字符的行仍然应该交换开始和结束。 不需要“^”或“$”,因为sed在默认情况下取尽可能大的值,所以整个行 使用*而不是+是因为使用+至少需要一个3字符的行,而2字符的行仍然应该交换开始和结束。
或者使用sed-r并从和字符中删除转义斜杠。-r选项在某些sed上不受支持。绝对正确re:“-r”的可移植性,但它仍然是一个有效的替代方案。或者使用sed-r并从和字符中删除转义斜杠。-r选项在某些sed上不受支持。绝对正确re:“-r”的可移植性,但尽管如此,这还是一个有效的替代方案。好吧,如果我们什么都不给出FS和OFS,那么它会将每个字符视为一个字段?1号在做什么?新行?@Dharak The 1有些是真的,有些是真的,默认操作是否打印该行,所以1={print$0}好的,如果我们什么都不作为FS和OFS,那么它会将每个字符视为一个字段?1号在做什么?新行?@Dharak1有些是真的,有些是真的,默认操作是否打印该行,因此1={print$0}