我有以下結構的文件對齊的話:SED/AWK:在一個文件
# #################################################################
# TEXT: MORE TEXT
# TEXT: MORE TEXT
# #################################################################
___________________________________________________________________
ITEM 1
___________________________________________________________________
PROPERTY1: VALUE1_1
PROPERTY222: VALUE2_1
PROPERTY33: VALUE3_1
PROPERTY4444: VALUE4_1
PROPERTY55: VALUE5_1
Description1: Some text goes here
Description2: Some text goes here
___________________________________________________________________
ITEM 2
___________________________________________________________________
PROPERTY1: VALUE1_2
PROPERTY222: VALUE2_2
PROPERTY33: VALUE3_2
PROPERTY4444: VALUE4_2
PROPERTY55: VALUE5_2
Description1: Some text goes here
Description2: Some text goes here
我想其他項目添加到該文件,使用SED或AWK:
sed -i -r "\$a$PROPERTY1: VALUE1_3" file.txt
sed -i -r "\$a$PROPERTY2222: VALUE2_3" file.txt
等等。因此,我的下一個項目是這樣的:
___________________________________________________________________
ITEM 3
___________________________________________________________________
PROPERTY1: VALUE1_3
PROPERTY222: VALUE2_3
PROPERTY33: VALUE3_3
PROPERTY4444: VALUE4_3
PROPERTY55: VALUE5_3
Description1: Some text goes here
Description2: Some text goes here
列值是參差不齊的。如何像以前的項目一樣將我的值與左側對齊?我可以在這裏看到2個解決方案:
- 在將值插入文件時對齊值。
- 按照我所做的方式將值插入到文件中,然後將它們對齊。
命令
sed -i -r "s|.*:.*|&|g" file.txt
漁獲物的屬性和值我要對齊,但我一直沒能正確地對準他們,即
awk '/^.*:.*$/{ printf "%-40s %-70s\n", $1, $2 }' file.txt
它打印出的文件,但它包含描述值和標籤,如果它們包含空格或破折號,則將其剪切。這只是一個大混亂。
我已經嘗試了更多的命令,基於我在堆棧溢出和一些博客上找到的內容,但沒有做任何我需要的。
注意:描述標記的值不是參差不齊 - 這是因爲我以單獨的方式將它們寫入文件。
我的命令有什麼問題?我如何實現我所需要的?
儘管可以使用sed/awk解決這個問題,但使用更強大的工具可能會更容易解決這個問題。您是否考慮過使用正確的數據結構的完整編程語言(例如perl,ruby,C++)來解決您的問題? – Heinrich
@海因裏希,我想避免使用完整的編程語言,因爲我在bash中有一個幾乎完整的腳本,完全符合我的要求,這是它唯一的問題。由於這個問題(並非如此嚴重),我不希望強迫腳本的用戶安裝不同語言的編譯器或解釋器。 – user2738748