需要交换2条线

时间:2019-05-28 21:40:06

标签: regex sed

对于以下代码的每个实例(有很多实例),我需要将“ userId”行与“ screen_name”行交换,以使“ screen_name”行位于“ userId”行之上。

{
  active: true,
  userId: '14053424',
  screen_name: '0xstark',
  maxTopTweets: 2,
  minLikesCount: 2,
  keywordsToReject: [],
  keywords: [],
  useDefaultKeywords: true,
  useDefaultRejectKeywords: true,
  useStrictKeywords: false,
  defaultPhoto: null,
},

2 个答案:

答案 0 :(得分:1)

要翻转user_id和屏幕名称的行:

awk '/userId:/{uid=$0;next}/screen_name/{$0 = $0 RS uid}1' input

这是将包含字符串userId:的行存储到变量uid中,并移至下一行,只要看到字符串screen_name,它将像{{1} },其中$0 = $0 RS uid用于获取新行。

答案 1 :(得分:0)

这可能对您有用(GNU sed):

sed '/userId:/{h;d};/screen_name:/G' file

userId行保存在保留空间中,并将其附加到screen_name行中。

假设userId总是在screen_name行之前。