簡體   English   中英

awk:從長行刪除短行

[英]awk: delete short line from long line

我有一長串的文字字符串,按長度排序。 我需要做的是找到長線中包含的任何短線,將長線分成兩條短線,並保持原始短線不變,如下所示:

input:
here is an example of a long line
an example of

output:
here is
a long line
an example of

您尚未發布足夠的數據集來允許我們發布完整的解決方案,但是以下是一些入門知識:

$ awk '
NR==FNR{
  a[$0]++;
  next
}
{
  for(x in a) 
    if(x!=$0 && index($0,x)>0) {
      sub(x FS,"\n")
    }
}1' file file
here is 
a long line
an example of
  • 我們正在對該文件進行兩次傳遞。 在第一遍中,讀取這些行並將它們作為鍵存儲在數組中(重復的行將被存儲為一個鍵)。
  • 在第二遍中,如果鍵不等於當前行而是當前行的子集,則遍歷數組,用換行符替換較小的單詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM