将可变文本逐行添加到文本文件

Ole*_*sii 6 command-line bash sed text-processing

我有一个文本文件:

cat test1
ch140/121_------_T_201607061430
ch140/121_------_T_201611070840
ch140/121_------_T_201611071125
ch140/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

我想将文本逐行添加到此文件中:

/121_------_T_201607061430
/121_------_T_201611070840
/121_------_T_201611071125
/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

结果必须是:

ch140/121_------_T_201607061430/121_------_T_201607061430
ch140/121_------_T_201611070840/121_------_T_201611070840
ch140/121_------_T_201611071125/121_------_T_201611071125
ch140/121_------_T_201611071235/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

我用了:

cat test1 | sed -e 's/ch140//' > test2
for a in $(cat test2)
do
????
done
Run Code Online (Sandbox Code Playgroud)

我可以为此使用什么命令?
我尝试使用sed命令,但没有用。

Zan*_*nna 4

sed 's/\/121.*/&&/' test1
ch140/121_------_T_201607061430/121_------_T_201607061430
ch140/121_------_T_201611070840/121_------_T_201611070840
ch140/121_------_T_201611071125/121_------_T_201611071125
ch140/121_------_T_201611071235/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

解释

  • s/old/new/old用。。。来代替new
  • \/121.*匹配/121以及其后的任何内容
  • &&匹配的模式两次

您可以添加tee或使用重定向来保存到新文件

sed 's/\/121.*/&&/' test1 | tee test2
Run Code Online (Sandbox Code Playgroud)


Tul*_*ova 4

paste命令会执行相同的cat操作,但并排执行。用于使用空分隔符,因此字符串之间没有任何内容-d ''paste

$ paste -d '' test1 test2 
ch140/121_------_T_201607061430/121_------_T_201607061430
ch140/121_------_T_201611070840/121_------_T_201611070840
ch140/121_------_T_201611071125/121_------_T_201611071125
ch140/121_------_T_201611071235/121_------_T_201611071235
Run Code Online (Sandbox Code Playgroud)

如果文件的长度不等,您可能需要查看此问题以防止出现难看的结果。