將當前行的第一個字符替換為上一行的第一個字符。例如輸入檔案:
Mark was
Great friend
And
輸出檔案:
Mark was
Mreat friend
Gnd
必須與sed
我不明白如何讓字母完全替換上一行單詞的開頭,我所能做的就是在行尾添加一個字符,而不是在開頭:
sed '2,$ s/[^.]/& &/; 2,$ s/ /\n/' file.txt | paste -d ' ' - -
輸出:
Mark was G
Great friend A
And
我不明白如何在正則運算式中準確指定在上一行的開頭作業。
uj5u.com熱心網友回復:
sed這肯定是錯誤的工具!但這似乎可以滿足您的要求:
sed -e 1's/./&&/' -e H -e 's/\(.\).*/\1/' -e x -e 's/\n.//' input
在第一行,復制第一個字符以填充保留空間。對于所有行,將行附加到保留空間(對于第一行,這是第一個字符重復的修改行)。然后洗掉除第一個字符之外的所有字符,并將模式空間與保留空間交換。然后洗掉換行符和該行的第一個字符,將前一行的第一個字符和該行的其余部分留在模式空間中,而只有第一個字符在保留空間中。列印圖案空間并重復。
uj5u.com熱心網友回復:
使用您顯示的示例,請嘗試以下awk代碼。簡單的解釋是,如果行號大于 1,則列印 prev(具有前一行的第一個字符)作為第一個字符,然后列印其余行。并將每行的第一個字符設定為 prev 變數,使其成為下一行的第一個字符。
awk '
FNR==1{ print }
FNR>1 {
print prev substr($0,2)
}
{
prev=substr($0,1,1)
}
' Input_file
或者更準確地說:
awk '
FNR>1 {
$0 = prev substr($0,2)
}
{
prev=substr($0,1,1)
}
1
' Input_file
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449580.html
上一篇:從requests_html匯入ModuleNotFoundError:沒有名為“requests_html”的模塊
