文件我使用sed
來連接文件的內容爲:格式基礎上,IFS
cat source.c | sed -e :a -e '$!N; s/\n/ /; ta'
該文件包含相關信息[系列串]通過管道|
分離。 我想將IFS
更改爲管道|
,並且可以通過管道將輸出傳遞到新的IFS
,從而向標準輸出顯示新格式的文件。
拼接後由source.c的實例:
void f0 (***) | void f1 (***) | void f2 (***)| void f3 (***)
我希望通過設置IFS
實現:事先的答覆
void f0 (***)
void f1 (***)
void f2 (***)
void f3 (***)
感謝。我是不知道,如果它可能與文件,我不想在這裏涉及變量或數組。
編輯:源文件中像這樣出現一些什麼樣的開頭:
void
f0
(***) |
void
f1
(***) |
void f2 (***) |
void f3 (***)
所以首先我串連然後我加倍空間每個字組,然後用管道作爲分隔符分割。
sed -e :a -e '$!N; s/\n/ /; ta' source.c | sed -e 's/ */ /g' -e 's/ *//'
的sed
和awk
替代做這項工作完美。
根據upvotes在第一次編輯時選擇的答案:)。 正如我在其中一個答案中所建議的那樣,我將這個問題保持不變,以便其他人找到這些簡單的替代方案,而不是與IFS
混淆。
如果輸入到'sed'是「每行一個功能」,並從過程所需輸出的是「每行一個功能」,你爲什麼穿通'將文件中的所有功能拼合成一行'的中間階段?從表面上看,您似乎希望將輸入格式作爲輸出格式。 –
他在最初的換行符上是扁平化的,並且希望管道符號替換它們,所以除非它們處於行結尾或行首,否則結果將會有很大不同。 – lynxlynxlynx
@JonathanLeffler我編輯了這篇文章,讓它更清晰一點 – Gil