Regex 交换每行的第一个和最后一个字符的sed命令
我想写一行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 '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}