簡體   English   中英

如何在ash或破折號腳本中的grep中使用制表符分隔符?

[英]How to use tab separators with grep in ash or dash script?

手頭的任務:

我有一個帶有四個制表符分隔值的文件:

peter 123   five   apples
jane  1234  four   rubberducks
jimmy 01234 seven  nicknames

我需要根據第二列從此文件中取出一行,並且該值在變量中。 假設我在變量foo中存儲了數字123。 我可以做

grep $'\s'$foo$'\s'

我從彼得的信息中脫穎而出,僅此而已。 有沒有辦法在破折號或灰燼上達到相同的效果?

您可以在此處使用awk

var='1234'
awk -v var="$var" '$2 == var ""' f
jane  1234  four   rubberducks

PS:我正在執行var "" ,以確保var被視為字符串而不是數字。

如果您的文件足夠小,以至於在Shell中進行迭代的效率不重要,那么您實際上根本不需要grep 以下內容在任何POSIX兼容的外殼程序(包括灰或破折號)中均有效:

var=123
while read -r first second rest; do
  if [ "$second" = "$var" ]; then
    printf '%s\t' "$first" "$second"; printf '%s\n' "$rest"
  fi
done

(在實踐中,我可能會在此處使用awk;僅考慮演示)。

暫無
暫無

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

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