我有一个脚本文件,我需要用另一个脚本修改,以在第8行插入文本.
要插入的字符串:Project_Name=sowstest,到一个名为的文件中start.
我试图使用awk和sed,但我的命令变得乱码.
我的命令输出类似于:
1540 "A B"
   6 "C"
 119 "D"
Run Code Online (Sandbox Code Playgroud)
第一列始终是数字,后跟空格,然后是双引号字符串.
我的目的是仅获得第二列,例如:
"A B"
"C"
"D"
Run Code Online (Sandbox Code Playgroud)
我打算用它<some_command> | awk '{print $2}'来完成这个.但问题是,第二列中的某些值包含空格,这恰好是分隔awk字段的默认分隔符.因此,输出搞砸了:
"A
"C"
"D"
Run Code Online (Sandbox Code Playgroud)
如何干净地获得第二列的值(带配对的引号)?
我有一个看起来像这样的CSV文件
AS2345,ASDF1232, Mr. Plain Example, 110 Binary ave.,Atlantis,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232, Mrs. Plain Example, 1121110 Ternary st. 110 Binary ave..,Atlantis,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232, Mr. Plain Example, 110 Binary ave.,Liberty City,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232, Mr. Plain Example, 110 Ternary ave.,Some City,RI,12345,(999)123-5555,1.56
我需要按行长度排序,包括空格.以下命令不包含空格,有没有办法修改它以便它对我有用?
cat $@ | awk '{ print length, $0 }' | sort -n | awk '{$1=""; print $0}'
Run Code Online (Sandbox Code Playgroud) 也许不是一个很具体的问题,但我感到困惑之间的差异grep,awk并sed在他们的Unix/Linux系统管理和文本处理的作用方面.
我正在学习awk,我想知道是否有一个选项可以将更改写入文件,类似于sed我将使用-i选项保存对文件的修改.
我明白我可以使用重定向来编写更改.但是有没有选择awk呢?
有没有办法在Unix中删除文件中的重复行?
我可以使用sort -u和uniq命令,但我想使用sed或awk.那可能吗?
我想用shebang 执行一个gawk脚本--re-interval."幼稚"的方法
#!/usr/bin/gawk --re-interval -f
... awk script goes here
Run Code Online (Sandbox Code Playgroud)
不起作用,因为gawk是用第一个参数调用的"--re-interval -f"(不是在空白处分开),它不明白.有解决方法吗?
当然你可以不直接调用gawk,而是将它包装成一个分割第一个参数的shell脚本,或者创建一个shell脚本,然后调用gawk并将脚本放到另一个文件中,但我想知道是否有某种方法可以做这在一个文件中.
shebang行的行为因系统而异 - 至少在Cygwin中它不会通过空格分割参数.我只关心如何在一个行为类似的系统上做到这一点; 该脚本不是便携式的.
使用awk或sed如何选择两种不同标记图案之间的线条?可能有多个标有这些图案的部分.
例如:假设文件包含:
abc
def1
ghi1
jkl1
mno
abc
def2
ghi2
jkl2
mno
pqr
stu
Run Code Online (Sandbox Code Playgroud)
并且起始模式是abc和结束模式是mno
So,我需要输出为:
def1
ghi1
jkl1
def2
ghi2
jkl2
Run Code Online (Sandbox Code Playgroud)
我使用sed匹配模式一次:
sed -e '1,/abc/d' -e '/mno/,$d' <FILE>
Run Code Online (Sandbox Code Playgroud)
有没有办法在sed或awk  反复做,直到文件的结尾?
太麻烦了:
awk '{print " "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' things
Run Code Online (Sandbox Code Playgroud) 我有一个不断写入/更新的文件.我想找到包含特定单词的最后一行,然后打印该行的最后一列.
该文件看起来像这样.随着时间的推移,将附加更多的A1/B1/C1线.
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434
Run Code Online (Sandbox Code Playgroud)
我试着用
tail -f file | grep A1 | awk '{print $NF}'
Run Code Online (Sandbox Code Playgroud)
打印值766,但没有输出.
有没有办法做到这一点?