Bash - 将位置X中的字符串复制到行尾

时间:2012-03-28 08:13:44

标签: bash sed cygwin

假设我在一个名为letters.txt的文件中有以下文字:

ABCDEFGHIJKLMNOPQRST

我想将位置2-3 (BC)复制到该行的末尾,如下所示:

ABCDEFGHIJKLMNOPQRSTBC

我试图用位置2-3加\ n替换\ n但是它不起作用。示例:

sed -r "~ s/\n/\^(.{1})(.{2})\n/" letters.txt > letters_new.txt 

我怎么能用bash做到这一点?我已经找到了答案但找不到任何答案。

3 个答案:

答案 0 :(得分:2)

TEXT=ABCDEFGHIJKLMNOPQRSTBC
echo $TEXT${TEXT:1:2}

bash的秘诀在Advanced Bash-Scripting Guide中描述,这是String section

答案 1 :(得分:0)

如果awk被你接受,那么一个非常短的单行可以完成这项工作:

kent$  echo "ABCDEFGHIJKLMNOPQRST"|awk 'BEGIN{FS=""}$0=$0$2$3'  
ABCDEFGHIJKLMNOPQRSTBC

答案 2 :(得分:0)

这可能对您有用:

echo "ABCDEFGHIJKLMNOPQRST" | sed 's/.\{1\}\(.\{2\}\).*/&\1/'
ABCDEFGHIJKLMNOPQRSTBC

或更简单:

echo "ABCDEFGHIJKLMNOPQRST" | sed 's/.\(..\).*/&\1/'
ABCDEFGHIJKLMNOPQRSTBC