Bash读取行并克隆它

时间:2015-07-14 20:27:59

标签: bash sed line clone

好的,我有很多具有这种结构的文件:

mail1@mail.it
mail2@mail.com
mail3@mail.co.uk

现在我正在尝试转换这些文件,以获得此结果

mail1@mail.it;mail1@mail.it
mail2@mail.com;mail2@mail.com
mail3@mail.co.uk;mail3@mail.co.uk

这是因为我要导入这个文件来创建一个邮件列表,所以在每一行我需要以windows风格返回。

我试着用sed这个但是我不知道,而且我现在没有发现这么多

我试过这种方法:

sed 's/^/;/' input.txt > output.txt

但我想念如何“克隆”每一行的内容,这个想法很简单 我读了这行,然后用一个粘贴它;最后,结果一定是对的。

如何复制每行的内容?

Ĵ

5 个答案:

答案 0 :(得分:2)

{"error":{"message":"(#100) Invalid file. Expected file of one of the following types:
    application\/octet-stream","type":"OAuthException","code":100}}

输出:

mail1@mail.it;mail1@mail.it
mail2@mail.com;mail2@mail.com
mail3@mail.co.uk;mail3@mail.co.uk

答案 1 :(得分:1)

最好为此使用paste

paste -d';' file file
mail1@mail.it;mail1@mail.it
mail2@mail.com;mail2@mail.com
mail3@mail.co.uk;mail3@mail.co.uk

您也可以使用sed也可以使用CRLF行结尾):

sed -i.bak $'s/\([^\r]*\).*/\\1;\\1/' file
mail1@mail.it;mail1@mail.it
mail2@mail.com;mail2@mail.com
mail3@mail.co.uk;mail3@mail.co.uk

答案 2 :(得分:1)

paste -d';' file file输出:

mail1@mail.it;mail1@mail.it
mail2@mail.com;mail2@mail.com
mail3@mail.co.uk;mail3@mail.co.uk

答案 3 :(得分:0)

如其他人所示,awk,sed或paste是最好的方法,但是..让我们再做一些!

bash循环:

cat file | while read line ; do echo "$line;$line"; done

perl的:

perl -pe 's/(.*)/$1;$1/' file

红宝石:

ruby -ne 'puts $_.chomp + ";" + $_' < file

蟒:

python -c "import sys;[sys.stdout.write(line.rstrip() + ';' + line) for line in sys.stdin]" < file

现在我已经没了什么了

答案 4 :(得分:0)

使用

sed 's/.*/&;&/' input.txt > output.txt
  • .*匹配整行
  • &所有模式内容
  • 的占位符