簡體   English   中英

如何刪除ksh中每個字段的每一行的開頭和結尾空格

[英]How to remove leading and trailing " , remove leading and trailing spaces from each row each field in ksh

我在ksh腳本中有很多函數(很多使用gawk),這些函數對文件進行很多計算。 文件通過管道傳遞。 但是現在我的源文件改變了。 現在,文件中的每個字段都用雙引號引起,如下所示。 另外,我必須修剪前導和尾隨空格或制表符(如果有)。

Old_Myfile.txt

Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056

New_Myfile.txt

"Name"|"Designation"|"emlid"
"Alex"|"Software Design Engg"|" E0023"
"      Corner  "|"      SDE"|" E0056 "

請提出與我已經編寫的腳本兼容的方法。

sed

$ sed 's/ *" *//g' file

Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056

也可以在awk腳本中組合,而無需執行此額外步驟。

該腳本可能針對您的需要進行了過度設計,但是它將在每個字段上單獨運行(在for循環內),以防您稍后需要添加其他邏輯。

BEGIN{
  FS="|";
  OFS="|";
}

{
  for(i=1; i<=NF; i++){
    gsub(/(^"[ ]*|[ ]*"$)/, "", $i);

    if (i == NF) {
      printf("%s\n", $i);
    }
    else {
      printf("%s%s", $i, OFS);
    }
  }
}

這是輸出

$ awk -f /tmp/script.awk </tmp/input.txt
Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056

如果您引用的字段不能包含| 然后在現有的awk腳本中將其添加為第一行:

awk '
{ gsub(/[[:space:]]*"[[:space:]]*/,"") }
<existing script>
'

暫無
暫無

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

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