MacOS:ファイル名に基づいてXMLファイルに行を挿入する方法は? [閉鎖]

MacOS:ファイル名に基づいてXMLファイルに行を挿入する方法は? [閉鎖]

私は純粋なLinuxボックスにアクセスできません。ファイル名コメント行が欠落しているXMLファイルがたくさんあります。その行をXMLファイルの特定の場所に挿入し、小さな変換を使用してXMLファイルのファイル名に基づいてファイル名コメントを生成する必要があります。

例:

24ToLife_AFamilyDivided_191045_DANY.xmlの例

<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:rating>TV-14</media:rating>

読むために必要です。

<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:content url="24ToLife_AFamilyDivided_191045.mpg" type="video/mpg" expression="full" />
<media:rating>TV-14</media:rating>

ベストアンサー1

私はMacOS High Sierraでこれを書いてテストしました。

#!/bin/sh

for fl in *.xml
do
    filename=$(echo $fl | cut -f 1 -d '.' | sed 's/_DANY$//')

    sed -i .orig '1a\
    <media:content url="'$filename'.mpg" type="video/mpg" expression="full" /> \
    ' $fl
done

ls *.xml     search in current directory
-i .orig     backup of original files with suffix
'1a ..'      insert into second line

sedMacOSのBSDはGNUとは若干異なるsedため、次の式を別々の行に記述する必要があります。

'1a \        # backslash and newline
 some text'  

改行文字\nは認識されないため、次のように書く必要があります。

'1a \
some text   # newline here
'

変える:

'1a \
some text\n'

使用法:

yurijs-MacBook-Pro:sed yurij$ cat *.xml
<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:rating>TV-14</media:rating>
<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:rating>TV-14</media:rating>
yurijs-MacBook-Pro:sed yurij$ ./cli
yurijs-MacBook-Pro:sed yurij$ cat *.xml
<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:content url="24ToLife_AFamilyDivided_191045.mpg" type="video/mpg" expression="full" />
<media:rating>TV-14</media:rating>
<description>Entrepreneur James overcame unconscionable childhood abuse before the sins of his past came back to haunt him.</description>
<media:content url="tt.mpg" type="video/mpg" expression="full" />
<media:rating>TV-14</media:rating>

おすすめ記事