输出对齐结构保留

时间:2014-08-23 10:59:12

标签: bash shell

这是我的输出:

   <activity>
       <intent-filter>
           <category android:name="android.intent.category.LAUNCHER" />
           <action android:name="android.intent.action.MAIN" />
       </intent-filter>
   </activity>

如何将输出对齐相同的结构? (活动标签块左对齐)

注意:开头有不同的空格和标签。

非常感谢!

3 个答案:

答案 0 :(得分:0)

通过输出输出:

sed -r 's/^\s*//'

^匹配行的开头。 \s匹配空格字符,*表示连续匹配任意数量的字符。

答案 1 :(得分:0)

要从每行的开头删除三个空格,您可以使用:

sed 's/^ \{3\}//' file   # or
sed -r 's/^ {3}//' file

答案 2 :(得分:0)

也许你想要:

file="somefile.xml"
spaces=$(sed -n "/<activity>/s/^\( *\)<.*/\1/p" $file)
sed "/<activity>/,/<\/activity>/s/^ */$spaces/" $file

这是下一个文件

<other>
   <some>
   </some>
   <activity>
       <intent-filter>
           <category android:name="android.intent.category.LAUNCHER" />
           <action android:name="android.intent.action.MAIN" />
       </intent-filter>
   </activity>
   <other2>
      <some>
   </other2>
</other>

产生

<other>
   <some>
   </some>
   <activity>
   <intent-filter>
   <category android:name="android.intent.category.LAUNCHER" />
   <action android:name="android.intent.action.MAIN" />
   </intent-filter>
   </activity>
   <other2>
      <some>
   </other2>
</other>