我有一个bash脚本,可以将txt文件(T1,T2..T100)复制并粘贴一百次。我需要在txt文件的第454行处向该文本文件添加特定的代码行。
我尝试使用sed和awk,但它们似乎不能正常工作。
我正在尝试做类似的事情,但是没有用:
awk 'NR==454{print "try:
Mesh_1.ExportMED( r'/home/students/gbroilo/Desktop/Script/Mesh_1.med', 0, SMESH.MED_V2_2, 1, None ,1)
pass
except:
print 'ExportToMEDX() failed. Invalid file name?'"}1'
看起来您的代码格式不正确,这会导致语法问题。为了安全起见,我在代码中将\047
用作代码中的'
,将\n
用作输出中需要的新行。
awk 'NR==454{print "try:\n Mesh_1.ExportMED( r\047/home/students/gbroilo/Desktop/Script/Mesh_1.med\047, 0, SMESH.MED_V2_2, 1, None ,1)\n pass\nexcept:\n print \047ExportToMEDX() failed. Invalid file name?\047"}1' Input_file
或以上述代码的非一个衬里形式:
awk 'NR==454{print "try:\n Mesh_1.ExportMED( r\047/home/students/gbroilo/Desktop/Script/Mesh_1.med\047,\
0, SMESH.MED_V2_2, 1, None ,1)\n pass\nexcept:\n print \047ExportToMEDX() failed. \
Invalid file name?\047"}1' Input_file
\
用于让终端知道代码正在继续而上述代码中没有任何新行。
这可能对您有用(GNU sed):
sed -i '454a\line one with a quote '\''\n'\''another'\''\nlast line' fileT*
另一种方式:
cat <<\!>fileInsert
line one with a quote '
'another'
last line
!
sed -i '454r fileInsert' fileT*
还有另一个:
cat <<\! | sed -i '454r /dev/stdin' fileT*
line one with a quote '
'another'
last line
!
如果要向特定文件插入特定文本,请使用GNU parallel,如下:
parallel -q sed -i '/454r fileInsert{}' fileT{} ::: {1..100}